我有一台Nginx服务器托管一个Web应用程序,当直接访问该应用程序时可以正常工作.其配置如下
server {
listen 8000 default_server;
listen [::]:8000 default_server ipv6only=on;
root /data/www/ ;
server_name server1.com;
location / {
try_files $uri $uri/ =404;
}
location /app/ {
}
}
现在我必须从另一台Nginx服务器提供此应用程序,所以我设置了如下的反向代理
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /data/www/ ;
server_name server2.com;
location / {
try_files $uri $uri/ =404;
}
location /app/ {
proxy_pass http://server1.com:8000/app/;
}
}
当我从server2访问应用程序时,出现以下错误,例如当我访问http:server2.com/app/css/app.css时
[error] 6601#0: *1 open() “/data/www/app/css/app.css” Failed (2: No such file or directory)
并且serv er1日志中没有错误.当我将Nginx设置为反向代理到server1时,为什么Nginx在server2中寻找静态文件?
ProxyPass /app/ http:server1:8000/app/
ProxyPassReverse /app/ http:server1:8000/app/
我想念什么?
最佳答案
您的regexp位置与您的请求/app/css/app.css相匹配,并拦截来自代理的请求.这就是正则表达式位置的工作方式.为防止这种情况,请在您的应用位置使用^〜修饰符:
location ^~ /app/ {
proxy_pass ...;
}
这将防止正则表达式位置匹配.
原文地址:https://www.jb51.cc/nginx/532422.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。