nginx

6

记录一下配置

跨域

#   指定允许跨域的方法,*代表所有
add_header Access-Control-Allow-Methods *;

#   预检命令的缓存,如果不缓存每次会发送两次请求
add_header Access-Control-Max-Age 3600;
#   不带cookie请求,并设置为false
add_header Access-Control-Allow-Credentials false;

#   表示允许这个域跨域调用(客户端发送请求的域名和端口) 
#   $http_origin动态获取请求客户端请求的域   不用*的原因是带cookie的请求不支持*号
#   always 当状态码是 200,201,204,206,301,302,303,304,307 时nginx会添加header,而 401、404、500,都没有添加header。
#   由于 Access-Control-Allow-Origin * 选项未生效,导致返回的response header里面没有允许跨域请求的选项 所以加上always
add_header Access-Control-Allow-Origin $http_origin always;

#   表示请求头的字段 动态获取
add_header Access-Control-Allow-Headers  $http_access_control_request_headers;

#   OPTIONS预检命令,预检命令通过时才发送请求
#   检查请求的类型是不是预检命令
if ($request_method = OPTIONS){
  return 200;
} 

ssl

listen 443 ssl;
server_name  lixianglin.com;  
client_max_body_size 15M;
ssl_certificate cert/7454185_www.xxxx.com.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/7454185_www.xxx.com.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;

转发请求

location ^~ /prod-api/ {
  proxy_pass http://127.0.0.1:8080/;#转发请求的地址
  proxy_connect_timeout 6000;#链接超时设置
  proxy_read_timeout 6000;#访问接口超时设置
}

gzip

html{
  gzip on; 
  gzip_static on;
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_comp_level 8;
  gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript;
  gzip_vary on;
  gzip_disable "MSIE [1-6]\.";
}

vue-router

解决vue-router history 模式刷新404


# 单页面
location / { 
  try_files $uri $uri/ /index.html;
}

# 多目录
location /manager/ {
  try_files $uri $uri/ /manager/index.html;
}