nginx将ip配置成https,如:https://192.168.1.1/,以及nginx.conf中proxy_pass转发的配置记录。
将ip配置https
nginx: [emerg] no "ssl_certificate" is defined for the "listen ... ssl" directive in /usr/local/nginx/conf/conf.d/upstream.conf:14
- 意思是ssl_certificate没有配置,可是ssl_certificate和ssl_certificate_key都已经配置,网上搜索ssl_certificate必须在http段中先定义, 在server段才配置ssl_certificate已经来不及了, 检查我的nginx配置,ssl_certificate确实只在server段定义,而在http段未定义,加到http段即可。
- 如果是你域名的话,不需要在http段中定义了,但是ip使用ssl必须在http中配置
解决方案
nginx的配置文件中nginx.conf中加入
http {
ssl_certificate xxx.pem;
ssl_certificate_key xx.key;
}
proxy_pass转发
参考 nginx的proxy_pass路径转发规则浅析(末尾/问题) | zifangsky的个人博客
说白了就是个/,注意这个/,一个/花费了我半个小时。
nginx做反向代理,这边使用的是转发,不是重定向哦
转发:用户看不到真实的地址
重定向:用户访问a链接,跳转到b链接,用户可以看到真实的链接
location匹配路径末尾没有 /
此时proxy_pass后面的路径必须拼接location的路径:
location /sta
{
proxy_pass http://192.168.1.31/sta;
}
- 外面访问:http://192.168.1.30/sta/sta1.html
- 相当于访问:http://192.168.1.31/sta/sta1.html
location匹配路径末尾有 /
1.proxy_pass后面的路径只有域名且最后没有 /
location /sta/
{
proxy_pass http://192.168.1.31;
}
- 外面访问:http://192.168.1.30/sta/sta1.html
- 相当于访问:http://192.168.1.31/sta/sta1.html
2.proxy_pass后面的路径只有域名同时最后有 /
location /sta/
{
proxy_pass http://192.168.1.31/;
}
- 外面访问:http://192.168.1.30/sta/sta1.html
- 相当于访问:http://192.168.1.31/sta1.html
3.proxy_pass后面的路径还有其他路径但是最后没有 /
location /sta/
{
proxy_pass http://192.168.1.31/abc;
}
- 外面访问:http://192.168.1.30/sta/sta1.html
- 相当于访问:http://192.168.1.31/abcsta1.html
4.proxy_pass后面的路径还有其他路径同时最后有 /
location /sta/
{
proxy_pass http://192.168.1.31/abc/;
}
- 外面访问:http://192.168.1.30/sta/sta1.html
- 相当于访问:http://192.168.1.31/abc/sta1.html
附:在nginx上面配置APK文件下载路径:
location ^~ /h5/appdownload/
{
# proxy_redirect off;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.1.31/;
proxy_set_header Cookie $http_cookie;
}
- 外面访问:http://test.com/h5/appdownload/Demo_1.0.0.apk
- 相当于访问:http://192.168.1.31/Demo_1.0.0.apk