我使用nginx为两个不同的应用程序创建反向代理,一个托管在服务器上,nginx托管在端口8011,另一个托管在不同的服务器上,端口号为8015。使用反向代理,可以在ROOT:80/上访问第一个应用程序,而在ROOT:80/blog上访问第二个应用程序。
现在,这两个应用程序的静态文件都在各自的static文件夹中,这两个文件夹位于两个不同的路径(第一个应用程序的静态路径与nginx:PATH_ONE/static托管在同一台服务器上,第二个应用程序的静态路径:PATH_TWO/static)。现在,托管在ROOT:80/下的应用程序从下面使用的配置中正确地获取了它的静态文件。但是,我不知道如何为第二个应用程序配置相同的配置。
如何确保使用nginx托管在不同URL上的两个应用程序使用各自的静态文件?
nginx配置:
upstream test_hosts {
least_conn;
server IP_ADDR_ONE:8011;
server IP_ADDR_TWO:8011;
}
server{
listen 80;
location / {
proxy_pass "http://test_hosts";
}
location /blog {s
rewrite ^/blog(.*) /$1 break;
proxy_pass "http://IP_ADDR_TWO:8015";
}
#browser caching of static assets
location ~* \.(jpg|jpeg|png|gif|ico|css|js|html)$ {
expires 7d;
root /PATH_ONE;
}
} 发布于 2018-06-28 19:56:23
有多种方法可以解决这个问题。取决于你的用例是如何工作的。如果您可以在/blog url本身上执行blog,那么这将是最容易做的事情
location /blog {
proxy_pass http://IP_ADDR_TWO:8015;
}
location /blog/static {
alias <App2 static path>;
}如果你不能做到这一点,你可以像下面这样做,在那里你有两个应用程序的公共根文件夹
#browser caching of static assets
location ~* \.(jpg|jpeg|png|gif|ico|css|js|html)$ {
expires 7d;
root /home;
try_files /blog/server/$uri /app/server/$uri = 404;
}这将首先检查博客中的文件,如果存在,则返回相同的结果,如果不存在,将根据您的问题检查另一个路径/ROOT_ONE。
如果这两个应用程序对静态文件使用相同的名称和相同的路径,那么它可能会产生错误并提供错误的文件。
如果你在同一台服务器上没有来自这两个应用程序的静态文件,那么你可以尝试如下所示
#browser caching of static assets
location ~* \.(jpg|jpeg|png|gif|ico|css|js|html)$ {
expires 7d;
root /home;
try_files /app/server/$uri = @try_blogs;
}
location @try_blogs {
proxy_pass http://IP_ADDR_TWO:8015$uri;
}https://stackoverflow.com/questions/51081037
复制相似问题