nginx两个应用程序proxy_pass 404在具有别名的位置

时间:2018-12-12 11:26:35

标签: nginx

我正在尝试使用nginx作为docker中运行的几个应用程序的反向代理。我正在使用两个位置,一个用于基本URL,另一个用于别名“ Demo”。 目的是使两个应用程序都可以使用相同的URL访问,但其中一个具有别名。到目前为止,我已经能够加载一个“ ASP”,但是另一个应用程序“ Demo”似乎加载时出现问题。

我的nginx配置:

# the IP(s) on which your node server is running. I chose port 3000.
upstream asp {
server 00.00.0.143:8080;
}

upstream demo {
server 00.00.0.143:3000;
}

#Point http requests to https
server {
listen  0.0.0.0:80;
server_name DOMAIN.COM;
server_tokens off;
return 301 https://$host$request_uri;
}

server {
listen       443 ssl;
server_name  DOMAIN.COM;
ssl_certificate     /etc/nginx/techlove_io.crt;
ssl_certificate_key /etc/nginx/techlove_io.key;
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         HIGH:!aNULL:!MD5;
#    access_log /var/log/nginx/myapp.log;
#    error_log /var/log/nginx/myapp_error.log;

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header X-Ssl on;
    proxy_pass http://asp;
    proxy_redirect off;
}

location /demo/ {
    rewrite ^/demo/(.*)$ /$1 break;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header X-Ssl on;
    proxy_pass http://demo/;
}

#error_page  404              /404.html;
# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}

现在,当我访问基本URL时,我得到了asp,但是当我尝试使用DOMAIN.COM/Demo时,我在日志中看到404代码。

[12/Dec/2018:11:04:38 +0000] "GET /js/env.js HTTP/1.1" 
404 0 "https://DOMAI.COM/Demo/" "Mozilla/5.0 (X11; Linux x86_64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" "- 
",
[12/Dec/2018:11:04:38 +0000] "GET 
/js/web.baac400bfe853f63da7d.js?c50cab901008fd0b709a HTTP/1.1" 404 0 
"https://DOMAI.COM/Demo/" "Mozilla/5.0 (X11; Linux x86_64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" "- 
"

我可以看到服务器正在拨打电话,但没有检索文件。我怀疑需要设置一些重写规则或其他选项。最后,如果我颠倒了上游的顺序,即在baseURL和Asp上以别名提供了演示,则演示开始工作,而Asp停止。就像重定向不在正确的服务器中查找文件一样。

0 个答案:

没有答案