【问题标题】:Not able to configure Nginx correctly as reverse proxy to both Jenkins and Nexus servers无法将 Nginx 正确配置为 Jenkins 和 Nexus 服务器的反向代理
【发布时间】:2020-10-29 03:10:50
【问题描述】:

我想通过将Nginx 配置为JenkinsNexus 的反向代理来关注Nginx 网址。

http://10.20.30.40 -> 应该显示 Nginx 主页

http://10.20.30.40/jenkins -> 应该显示 Jenkins 主页

http://10.20.30.40/nexus -> 应该显示 Nexus 主页

谷歌搜索后,我修改了默认配置文件并尝试检查配置。但是在检查我的配置时出现以下错误。

注意:我没有任何域和 ssl。暂时只使用IP地址。

sudo nginx -c /etc/nginx/nginx.conf -t

nginx: [emerg] invalid number of arguments in "proxy_pass" directive in /etc/nginx/sites-enabled/default:92
nginx: configuration file /etc/nginx/nginx.conf test failed

/etc/nginx/sites-available/default

# Default server configuration
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}

# Jenkins server configuration
server {
    listen 80;
    listen [::]:80;

    server_name _;

    root /var/www/html;
    index index.html;

    location /jenkins {
        proxy_pass http://localhost:8080
        try_files $uri $uri/ =404;
    }
}
        
# Nexus server configuration
server {
    listen 80;
    listen [::]:80;

    server_name _;

    root /var/www/html;
    index index.html;

    location /nexus {
        proxy_pass http://localhost:8081
        try_files $uri $uri/ =404;
    }
}

【问题讨论】:

    标签: nginx jenkins devops reverse-proxy nexus


    【解决方案1】:

    在服务器块之外为 jenkins 和 nexus 创建两个上游块,如下所示:

    upstream backendjenkins {
            server <hostname>:8080;
              }
    
    upstream backendnexus {
            server <hostname>:8081;
              }
    

    然后,在服务器块中,这样提及:

    location /jenkins {
               proxy_pass http://backendjenkins;
               try_files $uri $uri/ =404;
            }
    location /nexus {
               proxy_pass http://backendnexus;
               try_files $uri $uri/ =404;
            }
    

    希望,这可能对您有所帮助。

    【讨论】:

    • 对于private-ip,我尝试了以下选项localhost127.0.0.1public-ip,但在sudo nginx -c /etc/nginx/nginx.conf -t 失败。错误消息invalid host in upstream "http://localhost:8080"invalid host in upstream "http://127.0.0.1:8080" 等。如何为&lt;private-ip&gt; 指定正确的值?
    • 使用hostname -I 命令找到我的私有IP 并将其放入文件后,nginx 无法启动。我运行了这个命令sudo nginx -c /etc/nginx/nginx.conf -t,它给出了这个错误nginx: [emerg] invalid host in upstream "http://172.17.0.1:8080" in /etc/nginx/sites-enabled/default:20
    • 更新了答案。尝试使用上游块中的主机名,而不是私有 IP。
    • 同样的错误nginx: [emerg] invalid host in upstream "http://tools-server.kanaaritech.com:8080" in /etc/nginx/sites-enabled/default:20
    • 谁能帮我解决这个错误stackoverflow.com/questions/64462100/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    相关资源
    最近更新 更多