我有三个正在运行的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>
有人有个好主意吗?
谢谢!