我有一个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)
并且在server1日志中中中中到一M为什么Nginx在server2中寻找静态文件时我已将其设置为反向代理到server1相同的设置在apache中工作正常
ProxyPass /app/ http:server1:8000/app/
ProxyPassReverse /app/ http:server1:8000/app/
我错过了什么?
最佳答案
问题是你的第二个Nginx实例试图在本地提供文件:
location / {
try_files $uri $uri/ =404;
}
如果你想使用http://server2.com/app/服务,只需删除整个内容.如果你想使用http://server2.com/,请更新配置以反映:
listen [::]:80 default_server ipv6only=on;
server_name server2.com;
location / {
proxy_pass http://server1.com:8000/app/;
}