Windows下nginx配置https和反向代理

Windows下nginx配置https和反向代理
一、安装OpenSSL
1、先到http://slproweb.com/products/Win32OpenSSL.html ,去下载OpenSSL(根据系统选择32位或者64位版本下载安装);

在这里插入图片描述

2、然后安装在电脑上,安装目录如F:\OpenSSL-Win64;

3、然后配置环境变量,在系统环境变量中添加环境变量:

变量名:OPENSSL_HOME

变量值:F:\OpenSSL-Win64\bin;

(变量值为OPENSSL安装位置下的bin目录)

4、并在 Path变量 结尾添加一条: %OPENSSL_HOME%

注意:如果path变量末尾没有分号,则需要先在末尾添加英文分号后再添加该项。

二、安装nginx
此处已经安装了nginx了(详细下载和安装操作见相关文档)。

三、生成证书
1、在nginx安装目录中创建ssl文件夹用于存放证书;
在这里插入图片描述

2、然后到ssl目录下,打开命令行窗口;

具体方式是:按住shift键,右键选择“在此处打开cmd窗口”或者“在此处打开PowerShell窗口”,出现的窗口即是在此目录下的命令行窗口;

3、创建私钥

1)在命令行中执行命令:

openssl genrsa -des3 -out testtest.key 1024 # test文件名是自己随便起即可

2)输入密码后,再次重复输入确认密码。记住此密码,后面会用到。
在这里插入图片描述

注:此处用的密码是123456

4、创建csr证书

1)在命令行中执行命令:

openssl req -new -key testtest.key -out testtest.csr

其中key文件为刚才生成的文件。

2)执行上述命令后,需要输入一系列的信息。输入的信息中最重要的为Common Name,这里输入的域名即为要使用https访问的域名 ,比如输入的是testtest.com。其它的内容随便填即可,都是直接enter。
在这里插入图片描述

3)以上步骤完成后,ssl文件夹内出现两个文件:testtest.csr 和 testtest.key
在这里插入图片描述

5、去除密码

在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码。

1)复制testtest.key并重命名为testtest.copy.key。

在这里插入图片描述

2)在命令行中执行如下命令以去除口令:

openssl rsa -in testtest.copy.key -out testtest.key

3)然后输入密码,这个密码就是上文中在创建私钥的时候输入的密码。

在这里插入图片描述

6、生成crt证书

1)在命令行中执行此命令:

openssl x509 -req -days 365 -in testtest.csr -signkey testtest.key -out testtest.crt

2)至此,证书生成完毕。发现,ssl文件夹中一共生成了4个文件。下面,配置https服务器的时候,需要用到的是其中的testtest.crt和testtest.key这两个文件。

在这里插入图片描述

四、修改Nginx的nginx.conf配置文件

1)这个文件在nginx安装目录下的conf目录下,如:E:\nginx\nginx-1.17.7\conf目录下。用任意一个编辑器(如notepad++之类)打开这个nginx.conf文件。

2)找到HTTPS server配置的那一段(即包含有listen 443 ssl配置那一段)。发现这段代码被注释掉了。所以,首先把该段代码前面的#号去掉。然后分别修改其中的ssl_certificate和ssl_certificate_key配置项为刚才所生成的testtest.crt和testtest.key这两个文件的目录。并配置server_name为localhost(或者本机IP)。修改后的该段配置如下:

#HTTPS server

server {

listen 443 ssl;

server_name localhost;

ssl_certificate F://Program Files//nginx-1.14.2//nginx-1.14.2//ssl//test.crt; # 这个是证书的crt文件所在目录

ssl_certificate_key F://Program Files//nginx-1.14.2//nginx-1.14.2//ssl//test.key; # 这个是证书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;

}

}

3)注意一下那两个证书的文件路径的写法。

五、重启nginx
1)因为修改了配置文件,所以要重新加载配置文件,在此处调用命令行窗口中,输入如下命令:

nginx -s reload

注意:此命令执行不了,则需要改成:./nginx.exe -s reload

2)执行后发现报错
在这里插入图片描述

3)路径好像有问题,所以修改路径;

#ssl_certificate F://Program Files//nginx-1.14.2//nginx-1.14.2//ssl//test.crt;

#ssl_certificate F:/Program Files/nginx-1.14.2/nginx-1.14.2/ssl/test.crt;

#ssl_certificate F:\Program Files\nginx-1.14.2\nginx-1.14.2\ssl\test.crt;

ssl_certificate F:\Program Files\nginx-1.14.2\nginx-1.14.2\ssl\test.crt;

4)把上面4个全试了一边,最后没有一个成功;所以:把刚才的配置还原:

ssl_certificate cert.pem;

ssl_certificate_key cert.key;

5)然后重启nginx(命令是:start nginx ;不过本机上nginx被制作成服务了,只要启动nginx服务即可),发现

在这里插入图片描述

6)它这报错信息中,提到从conf文件夹中找不到cert.pem。那换个思路,把上面的testtest.cet,testtest.key文件放到conf文件夹下,这样就能找到了

ssl_certificate testtest.crt;

ssl_certificate_key testtest.key;

7)然后重启nginx,发现成功!

8)这时候,在浏览器地址栏输入https://IP地址并回车。

9)这时候,可能看到“您的连接不是私密连接”的提示,单击页面中的“高级”,并接着单击“继续前往test.com(不安全)”,就可以看到nginx的欢迎界面了。说明https服务器已经配置成功了。

注意:执行nginx -s reload命令:

nginx: [error] OpenEvent(“Global\ngx_reload_6252”) failed (2: The system cannot find the file specified)

错误原因:Nginx 尚未启动导致,执行 start nginx 命令开启Nginx即可

六、反向代理
1)继续修改配置文件:

#HTTPS server

server {

listen 443 ssl;

server_name localhost;

#ssl_certificate cert.pem;

#ssl_certificate_key cert.key;

ssl_certificate testtest.crt;

ssl_certificate_key testtest.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:8086; # spring boot 项目的端口号

固定写法-------------

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_set_header X-Forwarded-Port $server_port;

}

}

实际配置如下:
在这里插入图片描述

其中要有这两项,

location / {

root html;

index index.html index.htm;

}

location /robot {

proxy_pass https://oapi.dingtalk.com/robot;

}

注意:保留location /的语句块,并添加一个location /robot的语句块的是配置的反向代理;此处是实现一个电脑通过反向代理机器连接到钉钉机器人的webhook对应的网址;

七、调试结果
1、在此电脑的浏览器(注意:360安全浏览器会屏蔽提示,尽量选择其他浏览器,如:火狐浏览器)中,输入webhook,将其中的域名替换成本机IP地址,返回结果与外网连接一致即可。截图如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:上图为外网连接的访问结果;下面两个图为替换成IP地址的访问效果;

出现上图界面,点击“继续转到网页”,然后出现下图:

2、在未联网电脑上,配置dns反向代理:

1)找到C:\Windows\System32\drivers\etc\目录下的名为host的文件,在文件尾部添加域名,内容是:服务端的ip 钉钉机器人webhook链接中的域名,如下图:
在这里插入图片描述

2)使用管理员身份运行cmd.exe,然后输入:ipconfig /flushdns ,刷新dns;

在这里插入图片描述

3)打开命令行界面,输入:ping opai.dingtalk.com,测试通信成功如下图:

在这里插入图片描述

3、该未联网电脑配置完成后,打开浏览器,访问钉钉机器人的webhook,截图如下:

在这里插入图片描述

注意:有出现一个问题就是访问不成功,找到原因是该未联网电脑上Jenkins有配置代理,电脑有配置全局代理,这些代理都需要关闭或者删掉,才能访问成功。

至此,说明Windows下nginx配置https和反向代理已经成功了。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值