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;
}
}
复制代码
评论