如何为Angular和ReactJS配置NGINX
时间:2020-01-09 10:39:01 来源:igfitidea点击:
本教程将向我们展示如何为Angular或者React应用程序配置NGINX。
用NGINX重写URL
NGINX可以执行URL重写。这样,我们可以将所有请求或者请求的子集转发到特定文件-对于JavaScript框架通常为index.html。
使用try_files指令,我们可以指示NGINX重写要转发到目标文件的请求。该指令可以添加到NGINX配置的服务器或者位置块中。
try_files $uri $uri/ /index.html?$args;
NGINX配置文件在哪里
下面这些是默认服务器配置的位置。 NGINX支持托管多个站点,还可以将配置分为几个部分。其他配置文件可以在/etc/nginx/conf.d目录中找到。
此处是默认配置文件的位置。
Ubuntu 16.04以上/ Debian 8以上
/etc/nginx/conf.d/default.conf
CentOS 7 /红帽7
/etc/nginx/nginx.conf
重写所有请求
使用此方法捕获所有URI,并将它们转发到index.html。
location / { root /usr/share/nginx/html; index index.html; try_files $uri $uri/ /index.html?$args; }
转发特定URI的请求
我们可能只希望特定的URI处理路由。除了捕获所有请求,我们还可以将重写范围缩小到特定的URI。以下示例显示如何仅重写具有以/ profiles开头的URI的请求的URL。如果Angular或者React应用仅用于此特定URI,这将很有用。
另一个示例是,如果我们有多个React或者Angular应用程序由同一域托管。通过为每个URL指定一个URI,我们可以分隔流量。
location /profiles { root /usr/share/nginx/html; index index.html; try_files $uri $uri/ /index.html?$args; }
使用正则表达式过滤URI重写
默认NGINX站点的重写规则示例
NGINX示例配置
上面的示例仅显示了用于创建重写的指令。以下内容适合那些想要更多背景信息的人。
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html?$args; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }