通过不同的路径转发不起作用

时间:2019-06-30 09:02:38

标签: angular docker nginx

我有三个正在运行的Nginx Docker容器实例。第一个只是代理,其他两个用作Angular应用程序。

它在唯一的一个位置上可以完美工作/我已经运行了几个月,没有任何麻烦。由于某些原因,我必须添加位置/ foo来区分两个Angular应用程序(由Nginx嵌入)。第一个运行在:8000下,第二个运行在:8100下。

具有两个位置/和/ foo的代理的配置,如下所示:

server {
        listen 80;
        server_name example.org;
        return 301 https://$host$request_uri;
        client_max_body_size 9000M;
}

server {

        listen 443 ssl;
        server_name example.ort;
        location ^~ /foo {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://example.org:8100/;
                proxy_ssl_session_reuse off;
                proxy_set_header Host $http_host;
        }

        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://example.org:8000;
                proxy_ssl_session_reuse off;
                proxy_set_header Host $http_host;
        }

        ssl_certificate /etc/ssl/certs/example.org.crt;
        ssl_certificate_key /etc/ssl/private/example.org.key;
        client_max_body_size 9000M;
}

由于/仍然可以正常工作,因此/ foo不起作用。 /链接到:8000,/ foo链接到:8100。两者都具有相同的Nginx配置。两个Angular应用程序的Nginx配置如下:

server {
    listen       80 default_server;

    root /usr/share/nginx/html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /assets/ {
      root /usr/share/nginx/html;
      autoindex off;
    }

    location /api/ {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-NginX-Proxy true;
      proxy_pass http://backend:8080/;
      proxy_ssl_session_reuse off;
      proxy_set_header Host $http_host;
      proxy_redirect off;
    }

  client_max_body_size 500M;
}

我已经尝试通过

重写网址
rewrite /foo/(.*) /$1 break;

因为我猜想传递了错误的网址。但这并不能解决问题。

只是为了限制错误原因,在调用example.org:8000或example.org:8100时,它可以正常工作。只有/ foo会引起问题。

重要观察结果::当我调用example.org/foo时,html代码告诉我标题正确,但是Web浏览器仅显示空白页(运行在:8100的实例似乎可达)。但是在JavaScript控制台中,会出现错误消息:

  

错误的SyntaxError:意外令牌<< / p>

有人有个好主意吗?

谢谢!

0 个答案:

没有答案