我有这个代理链:我的内部nginx的nginx代理,代理tomcat
主要的nginx:
server {
listen 80 default_server;
access_log /var/log/nginx/eco.access.log main;
error_log /var/log/nginx/eco.error.log;
root /usr/share/nginx/html;
location / {
index index.html;
}
location /analytics {
proxy_pass http://10.89.81.130:80/;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE_ADDR $remote_addr;
}
内部nginx:
server {
listen 80 default_server;
proxy_intercept_errors on;
error_page 404 = /error404_nx.html;
root /usr/share/nginx/html;
location / {
root /usr/share/nginx/html;
index index.html;
}
location /ords {
rewrite ^\/ords\/f.p(.*)$ /analytics/ords/$1 break;
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE_ADDR $remote_addr;
}
我希望请求将是/ analytics / ords / ...,但结果/ ords / ...没有分析,我得到404错误,我做错了什么?
答案 0 :(得分:0)
在您的主nginx
使用:
location /analytics/ {
proxy_pass http://10.89.81.130:80/;
...
}
注意额外的/
。这会导致URI在内部/analytics/ords
收到之前从/ords
到nginx
设置别名。然后将其作为/ords
未经修改传递到端口8080。
有关详细信息,请参阅this document。