nginx locaiton 配置是日常工作中经常使用到的配置指令标签,它的形式非常简单
location [modifer] [uri] {
}
location 位于 server 标签内,也可以位于另一个 location 内部.对于这个指令标签,最为主要的就是 modifier 的定义,经常配置上的错误都是源自对它的不熟悉。
1、可以不填写 modifier 直接写 uri 的地址,对于这个情况 ,第一个匹配成功的地址,后续会继续匹配
location / 这方法会匹配所有的路径,因为任都是以/ 开始的,匹配成功后会继续匹配,如果没有找到合适的匹配,将会使用这个 location。
2、= 代表精确的配置,location = /images 这样的设置智慧匹配到 http://域名/images ,像 /images/index 等都是不它匹配的对象
3、对于上面提到的配置项, location /images/ 这个配置会匹配含有 images 这个 url 的请求,但是不会停止搜索,会继续匹配更加精确的。
4、location ^~ /images 代表大小写敏感的匹配,一旦匹配成功,停止寻找其他匹配项目
5、location ~* .(png|jpg)$这样的匹配代表任何 png、jpg 结尾的都能够匹配,而且是大小写不敏感,但是如果
6、location ~ /images 这个代表大小写敏感的正则匹配,而且匹配后不会停止搜寻更好的匹配
7、location ~* /images 这个是代表着大小写不敏感的正则匹配,而且也会继续搜寻更好的匹配项
下面再列一下 ant design 的 nginx 的配置,在项目中经常用到
listen 80; # gzip config gzip on; gzip_min_length 1k; gzip_comp_level 9; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_vary on; gzip_disable "MSIE [1-6]\."; root /usr/share/nginx/html; location / { # 用于配合 browserHistory使用 try_files $uri $uri/ /index.html; # 如果有资源,建议使用 https + http2,配合按需加载可以获得更好的体验 # rewrite ^/(.*)$ https://preview.pro.ant.design/$1 permanent; } location /api { proxy_pass https://ant-design-pro.netlify.com; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; }}server { # 如果有资源,建议使用 https + http2,配合按需加载可以获得更好的体验 listen 443 ssl http2 default_server; # 证书的公私钥 ssl_certificate /path/to/public.crt; ssl_certificate_key /path/to/private.key; location / { # 用于配合 browserHistory使用 try_files $uri $uri/ /index.html; } location /api { proxy_pass https://ant-design-pro.netlify.com; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; }}
复制代码
评论