概述
遇到一个问题:
在一台外网服务器 https的程序页面里,访问另一台内网服务器的http 端口8088的url图片。
想要正常访问就需要给内网服务器配置证书。
我这里是用nginx代理
1、下载Nginx
(1)官网地址 http://nginx.org/en/download.html
我这里下载的版本是 1.4.7
(2)下载完成后是一个压缩包,解压到磁盘任意目录,例如这里我解压到了:D:Serversnginx-1.4.7
(3)打开cmd跳转到nginx目录下,运行nginx
- 运行命令:
start nginx.exe
- 停止 :
nginx -s stop
- 重新加载:
nginx -s reload
如果不行的话试试这个:nginx
我这里是直接输入nginx
启动的
2、Nginx配置
找到nginx.conf
文件,打开修改配置。
找到server
那个大括号,我这里只修改了listen
端口改成10001
,其他的都没变动。
server {
listen 10001;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
修改完成后,重新启动nginx,可以用页面看一下是否成功。
Windows下Nginx开机自启参照:
https://www.cnblogs.com/thyshare/p/14228101.html
3、Nginx配置证书
把生成好的证书放在conf目录下,我这里是申请好的阿里云的证书。
如果没有证书可以自己试着生成一个,可以参考
https://www.cnblogs.com/vincent-li666/p/5851463.html
https://blog.csdn.net/daily886/article/details/79268644
然后打开nginx.conf
找到下面被注掉的HTTPS那一块
- 原本的代码:
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
- 修改过后的代码:
server {
listen 10002 ssl;
server_name localhost;
#rewrite ^(.*)$ https://$host$1 permanent;
#rewrite ^(.*)$ http://$host:8088$1;
ssl_certificate D:/Servers/nginx-1.4.7/conf/cacertkey/a.pem;
ssl_certificate_key D:/Servers/nginx-1.4.7/conf/cacertkey/a.key;
#ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:8088;
}
}
浏览器访问图片:
到此解决。
4、配置证书过程遇到的问题
(1)解决Nginx报错The plain HTTP request was sent to HTTPS port
注掉红框里那一行解决。
(2)转发重定向的问题
- 修改前:
一开始写的rewrite ^(.*)$ http://$host:8088$1;
如图浏览器输入地址:
回车之后:
发现就算不加permanent
也会重定向,并且会把8088端口带出来,出现在浏览器的herder里。
- 修改后:
改成了在location
里面加入一行proxy_pass http://127.0.0.1:8088;
我的图片地址是http://127.0.0.1:8088/后面一大推
改完之后https://192.168.90.2:10002/转发到http://192.168.90.2:8088/
记录过程,没有对nginx进行详解,有需要的小伙伴可以www.baidu.com哦!
参考博文:https://blog.csdn.net/u014153701/article/details/47831109
https://www.cnblogs.com/czlun/articles/7010604.html
https://www.cnblogs.com/vincent-li666/p/5851463.html(包含证书生成)
最后
以上就是孤独鸭子为你收集整理的windows下nginx配置证书实现https访问的全部内容,希望文章能够帮你解决windows下nginx配置证书实现https访问所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复