Nginx常用配置
2022-07-25 16:37:59
2025-01-15 00:23:47
location的匹配规则
- = 表示精确匹配。只有请求的url路径与后面的字符串完全相等时,才会命中。
- ^~ 表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找。
- ~ 表示该规则是使用正则定义的,区分大小写。
- ~* 表示该规则是使用正则定义的,不区分大小写。
注意的是,nginx的匹配优先顺序按照上面的顺序进行优先匹配,而且注意的是一旦某一个匹配命中直接退出,不再进行往下的匹配
剩下的普通匹配会按照最长匹配长度优先级来匹配,就是谁匹配的越多就用谁。
Nginx跨域配置
language
server {
listen 80 default_server;
server_name _;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Origin $http_origin;
location / {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Methods $http_access_control_request_method;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
add_header Access-Control-Max-Age 1728000;
return 204;
}
}
}
重定向(h5跳pc)
shell
if ($http_user_agent !~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {
rewrite ^(.*) https://blog.xiaolong0418.com$1 permanent;
}
重定向(效率高)
language
location / { try_files $uri $uri/ /index.html; }
html设置history模式
language
location / {
index index.html index.htm;
proxy_set_header Host $host;
# history模式最重要就是这里
try_files $uri $uri/ /index.html;
# index.html文件不可以设置强缓存 设置协商缓存即可
add_header Cache-Control 'no-cache, must-revalidate, proxy-revalidate, max-age=0';
}
接口反向代理
language
location ^~ /api/ {
# 跨域处理 设置头部域名
add_header Access-Control-Allow-Origin *;
# 跨域处理 设置头部方法
add_header Access-Control-Allow-Methods 'GET,POST,DELETE,OPTIONS,HEAD';
# 改写路径
rewrite ^/api/(.*)$ /$1 break;
# 反向代理
proxy_pass http://static_env;
proxy_set_header Host $http_host;
}
静态资源设置七天强缓存
language
location ~* \.(?:css(\.map)?|js(\.map)?|gif|svg|jfif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
# 静态资源设置七天强缓存
expires 7d;
access_log off;
}
以目录去区分多个history单文件
language
server {
listen 80;
server_name taobao.com;
index index.html index.htm;
# 通过正则来匹配捕获 [tmall|alipay]中间的这个路径
location ~ ^/([^\/]+)/(.*)$ {
try_files $uri $uri/ /$1/dist/index.html =404;
}
}
目录