我一直在尝试研究Nginx,以在localhost:4200上配置Angular 5 ng服务的代理,但是只能得出为已构建项目提供服务的结果。我从这项研究中发现的配置“有些”有效,但是导致白页未加载任何数据:
dev:12 GET http://192.168.1.84/inline.bundle.js net::ERR_ABORTED
dev:12 GET http://192.168.1.84/polyfills.bundle.js net::ERR_ABORTED
dev:12 GET http://192.168.1.84/styles.bundle.js net::ERR_ABORTED
dev:12 GET http://192.168.1.84/vendor.bundle.js net::ERR_ABORTED
dev:12 GET http://192.168.1.84/main.bundle.js net::ERR_ABORTED
看来看不到ng serve提供的文件,但至少到达了该项目的index.html页面。这是我当前正在使用的配置:
location /dev {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
rewrite ^/(.*)$ /$1 break;
proxy_set_header Host localhost;
proxy_pass http://localhost:4200;
}
我应该在/ dev配置中添加什么?
首先,检查Angular应用的<base>
标签-它需要与应用的新位置匹配。因此,例如,如果您要通过Nginx在托管应用程序https://localhost/dev/
,则<base>
标签必须为:
<base href="/dev/">
您可以在应用程序的中找到此标签index.html
。
其次,nginx不会自动代理ng serve
用于实时重载功能的所有流量。您可以将这些额外的流量添加到您的代理中nginx.conf
:
location ^~ /sockjs-node/ {
proxy_pass http://127.0.0.1:4200;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
}
假设ng serve
您的应用程序托管在端口4200(默认设置)上。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句