NGINX没有为第二台服务器

时间:2017-12-06 15:26:35

标签: asp.net linux nginx phoenix-framework

我是NGINX的新手(一般来说都很好),请原谅我的无知。我有一个在localhost:4000上运行的Phoenix Web应用程序和一个在localhost:5123上运行的ASP.NET Web应用程序。我尝试使用NGINX创建反向代理,以便可以从同一个域访问任一Web应用程序。我的NGINX配置文件包含以下内容:

server {
  listen 80;
  server_name example.com;

  location / {
    proxy_pass http://localhost:4000;
  }

  location /test {
    rewrite /test(.*) /$1 break;
    proxy_pass http://localhost:5123;
  }
}

我能够访问example.com/上的服务器1和example.com/test上的服务器2,但是,服务器2无法加载自己的css,javascript和图像文件。有没有办法确保服务器1和服务器2通过NGINX配置设置使用自己的资源?

1 个答案:

答案 0 :(得分:0)

你是正确的方式。您的第二项服务缺少一些行:

替换...

location /test {
    rewrite /test(.*) /$1 break;
    proxy_pass http://localhost:5123;
}

...与

location /test {
    rewrite                /test/(.*) /$1 break;
    rewrite                ^/test$ /test/ permanent;
    proxy_pass             http://localhost:5123/;
    proxy_redirect         / /test/;
    proxy_set_header       Host $host;
    proxy_buffering off;
}

我不知道这是否是实现这一目标的最佳方法。很久以前我使用这个配置在我的服务器上实现了etherpad-service。那个时候我没有选择使用子域名。无论如何 - 使用子域进行第二次服务会更好。