记录下nginx配置踩过的坑,主要是在windows使用时坑较多
后台运行
需在配置里加上
daemon on;
然后启动
start nginx -c <配置文件路径>
SSL证书
基本配置如下
#以下属性中,以ssl开头的属性表示与证书配置有关。
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name yourdomain;
root html;
index index.html index.htm;
ssl_certificate cert/cert-file-name.pem;
ssl_certificate_key cert/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.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
ssl_prefer_server_ciphers on;
location / {
root html; #Web网站程序存放目录。
index index.html index.htm;
}
}
需要特别注意的是,如果在windows中使用,证书文件目录要用双斜杠() # 开启文件列表
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
静态资源配置
location /img/ {
alias D:\data\img\;
add_header Access-Control-Allow-Origin *;
}
- 需要注意alias 和root的区别
proxy_pass 后面的url 加与不加/
location /api/ {
proxy_pass http://127.0.0.1:7653/;
.....
}
随便放下location的优先级
- 正则匹配 location ~ /index { }
- 不区分大小写的正则匹配 location ~* /index { }
- 匹配路径的前缀,如果找到停止搜索 location ^~ /index { }
- 精确匹配 location = /index { }
- 普通路径前缀匹配 location /index { }
- 优先级: 4 > 3 > 2 > 1 > 5
回到正题,下面两个配置到底啥区别
# 配置1
location /api/ {
proxy_pass http://127.0.0.1:7653/;
.....
}
# 配置2
location /api/ {
proxy_pass http://127.0.0.1:7653;
.....
}
假设我们在浏览器里面输入的路径为https://***/api/a1
,那么配置1实际访问的接口是是http://127.0.0.1:7653/a1
,而配置2实际访问的接口是是http://127.0.0.1:7653/api/a1
。其实记住一个口诀就行了,来吧下面的话复读三遍
加杠不加location,不加杠就加location
最后发放上玩则会那个的转发配置
location /api/ {
proxy_pass http://127.0.0.1:7653/;
proxy_set_header Host $Host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
proxy_set_header X-Host $host:$server_port;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 30s;
proxy_read_timeout 86400s;
proxy_send_timeout 30s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}