我使用 Nginx 创建了一个反向代理,用于重定向各种应用程序(包括 ASP.NET API 和 Angular 应用)。
反向代理的 nginx.conf 配置文件(最重要的设置):
...
server {
listen 80;
server_name localhost 127.0.0.1;
location /projects/sample-app1/api {
proxy_pass http://sample-app1-api:80;
}
location /projects/sample-app1 {
# Angular app
proxy_pass http://sample-app1:80;
}
location /projects/sample-app2 {
# Angular app
proxy_pass http://sample-app2:80;
}
location /api {
proxy_pass http://random-api:80;
}
location / {
proxy_pass http://personal-app:80;
}
}
所有API都可用并正常工作,因为它们的路径由位置参数指示,与控制器中的路径相同。在URL“ /”上运行的Angular应用程序也可以正常工作,但问题出现在“ sample-app1”和“ sample-app2”上。当我键入URL以转到这些应用程序时,我会收到类似以下错误的错误消息:
Uncaught SyntaxError: Unexpected token < main.d6f56a1….bundle.js:1
我的怀疑是指向应用程序的URL包含了额外的元素 (/projects/sample-app1),而其默认的索引路径只是“/”。 所以我必须重写来移除冗余的URL部分,但如何做呢? 我迄今为止尝试过的方法都没有成功,我已经从StackOverflow和Github上的其他线程中尝试了不同的方式。
Angular应用程序nginx.conf:
events{}
http {
include /etc/nginx/mime.types;
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
}