使用Nginx的反向代理多角度应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Nginx的反向代理多角度应用程序相关的知识,希望对你有一定的参考价值。

我有两个不同的角度应用程序(分别说alpha和beta),它们在两个基于docker nginx的容器中运行,我需要根据子域路由到角度应用程序。在那里,我在docker中使用了另一个nginx实例作为反向代理。我也想使用SSL。初始路由工作正常。但是,当我刷新浏览器时,它会显示404。我尝试了try_files $uri $uri/ /index.html;,但没有成功。有人可以在这里帮助我。

基本上有3个容器正在运行。两个用于Angualr应用程序,一个用于代理。所有运行在单个Docker主机中。

提到的角度应用程序在nginx容器中运行,并且它们使用以下nginx配置。

Alpha版本使用:

server {
    listen  5100;
    server_name  localhost;

    location / {
        root    /usr/share/nginx/html;
    }
}

测试版使用:

server {
    listen  5200;
    server_name  localhost;

    location / {
        root    /usr/share/nginx/html;
    }
}

它们都在端口80以外的两个不同端口中运行;

下面是我编写的nginx反向代理配置。

upstream valpha {
    server alpha:5100;
}

upstream vbeta {
    server beta:5200;
}

server {
    listen       80;
    server_name  *.mydomain.com;
    return       301 https://$host$request_uri;
}

server {
    listen  443 ssl;
    server_name  subdomainalpha.mydomain.com;

    ssl_certificate /etc/ssl/mydomain.com.crt;
    ssl_certificate_key /etc/ssl/mydomain.com.key;

    location / {
        proxy_pass http://valpha;
    }
}

server {
    listen  443 ssl;
    server_name  subdomainbeta.mydomain.com;

    ssl_certificate /etc/ssl/mydomain.com.crt;
    ssl_certificate_key /etc/ssl/mydomain.com.key;

    location / {
        proxy_pass http://vbeta;
    }
}

提前感谢。

答案

您对两者都使用相同的root。您应该执行以下操作

location / {
  alias /var/www/html/app_one/dist/;
  try_files $uri$args $uri$args/ /app_one/index.html;
}

并且另一台服务器应使用不同的文件夹,例如alias /var/www/html/app_two/dist/;

以上是关于使用Nginx的反向代理多角度应用程序的主要内容,如果未能解决你的问题,请参考以下文章

[转]使用Nginx实现反向代理

重识Nginx - 系列导读

为Docker创建自动化nginx反向代理

nginx反向代理

Nginx反向代理

Nginx——代理