笔记:Nginx常用配置
记录一些使用nginx过程中常用的配置
location
反向代理
# 所有/api开头的请求走反向代理
location ^~ /api {
proxy_pass http://localhost:8080;
}
# 所有/api开头的请求走反向代理,并且去掉/api前缀
location ^~ /api {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://localhost:8080;
}
单页面路由
单页面项目使用中,刷新页面会导致404,因为location只配置了根路径,所以需要try_files指令来重新找到index.html
location / {
root <your_project_folder>;
try_files $uri $uri/ /index.html;
}
支持websocket
location <im_path> {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://localhost:<im_port>;
}
静态资源缓存
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|mp4|svg|webp)$ {
#过期时间为7天,
#图片文件不怎么更新,过期可以设大一点,
#如果频繁更新,则可以设置得小一点。
expires 7d;
proxy_pass http://localhost:3000;
}
location ~ .*\.(js|css)$ {
expires 60s;
proxy_pass http://localhost:3000;
}
location / {
proxy_pass http://localhost:3000;
}
server
增加ssl证书
server {
#HTTPS的默认访问端口443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
listen 443 ssl;
server_name <server_name>;
#填写证书文件绝对路径
ssl_certificate <pem path>;
#填写证书私钥文件绝对路径
ssl_certificate_key <key path>;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#表示优先使用服务端加密套件。默认开启
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root <project_folder>;
index index.html;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 80;
#填写证书绑定的域名
server_name <server_name>;
#将所有HTTP请求通过rewrite指令重定向到HTTPS。
rewrite ^(.*)$ https://${server_name}$1 permanent;
}