文章目录
- 下载
- 安装
- 配置
- 配置错误界面
- 配置 HTTPS
- 生成自签名证书
- 打开防火墙开放端口
- 修改配置文件
- 刷新 nginx 配置
- 脚本
- 测试 HTTPS
所有资源链接 或者,如果你不嫌麻烦,可以去它们的官网(如下)慢慢下载……
下载
nginx(它们这款软件在官网上的名称就是小写的,可能是因为它这只是 engine x
的缩写吧)
选择 nginx/Windows-*
下载。
安装
- 解压压缩包,双击打开
nginx.exe
,窗口会自动隐藏。 - 打开浏览器,访问 http://localhost/。
- 如果一切正常的话,你将会看到:
配置
配置错误界面
打开 .\conf\nginx.conf
文件,可以看到它大致如下图所示:
把 #error_page 404 /404.html;
一行前面的 #
去掉,在 .\html
目录下放置 404.html
。
同理,复制此行粘贴在下方,改为 error_page 403 /403.html;
.
配置 HTTPS
这是第一个坑。
首先,在 nginx 安装目录下新建 cert
文件夹,也可以命名为其他名字。
如果你已经有了 SSL 证书,请将 .pem 证书和 .key 私钥复制到新建的文件夹内,然后跳转至修改配置文件。
生成自签名证书
单独下载 OpenSSL 选择 Win64 OpenSSL v*
中的 EXE 或 MSI 下载安装。随后打开计算机属性—高级系统设置—环境变量,在 Patch 值的最后添加上你的 OpenSSL 的 bin 文件夹的位置。
- 打开命令提示符,cd 到这个文件夹内。
- 键入
openssl genrsa -des3 -out server.key 2048
以生成私钥。
- 键入
openssl req -new -key server.key -out server.csr
以生成证书签名请求文件。
需要依次输入国家,地区,城市,组织,组织单位,Common Name 和电子邮件地址。
这是我输入的信息,仅供参考
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Beijing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Xiao Bai Shu
Organizational Unit Name (eg, section) []:Xiao Bai Shu
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:xiao*@126.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:Xiao Bai Shu
- 重命名
server.key
文件为server.key.org
,然后执行
openssl rsa -in server.key.org -out server.key
以删除密码。
- 执行
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
以签署证书。
- 执行
openssl rsa -in server.key -out server.pem
或
openssl x509 -in server.crt -out server.pem
以生成 .pem 证书。
至此,SSL 证书签署完成。你可以打开并安装 server.crt
到受信任的根证书颁发机构
存储区中。在确认指纹的对话框出现时,点击“是”以完成安装。
打开防火墙开放端口
- 转到控制面板—系统和安全—Windows Defender 防火墙(有的版本叫 Windows 防火墙)—高级设置。
- 在控制台左侧点击
出站规则
。 - 点击菜单中的操作—新建规则,选择
端口
,TCP、所有特定端口,输入80
,选择允许连接
,然后下一步全选,名称输入80 端口
方便辨识。 - 用同样的方法将
443
端口也开放掉。
修改配置文件
打开 .\conf\nginx.conf
文件,在server
段中最前面加入如下代码:
# HTTP
listen 80 default backlog=2048;
# HTTPS
#监听443端口
listen 443 ssl;
#你的域名
server_name location;
#ssl证书的pem文件路径
ssl_certificate /Server/nginx-1.21.6/cert/server.pem;
#ssl证书的key文件路径
ssl_certificate_key /Server/nginx-1.21.6/cert/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
刷新 nginx 配置
在命令提示符中 cd 到 nginx 的安装目录,执行
nginx -s reload
以刷新配置。
脚本
事实上,我写了一个 bat 脚本以便于刷新配置,代码如下:
@echo off
::在您自己使用而不是打包发布给别人时,您可以删掉下面的两行代码
echo Refresh-NGINX 工具 by 小白鼠 博客:
echo 正在刷新 nginx 配置……
copy /b Q:\Server\nginx-1.21.6\conf\nginx.conf Q:\Server\nginx-1.21.6\conf\backup\%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%.%time:~9,2%.conf >nul 2>nul
::以下目录请自行更改为 nginx 的安装目录
"Q:\Server\nginx-1.21.6\nginx.exe" -s reload
请先在 .\conf
目录下创建一个名为 backup
的文件夹,然后以 ANSI 编码保存以上代码为 refresh-nginx.bat
并将其放入一个已被加入到 Path
环境变量的目录中。在以后您可以通过键入 refresh-nginx
来实现 nginx 的配置更新和备份。
测试 HTTPS
访问 https://localhost/,如果您使用的是自签名证书,浏览器可能会显示安全性页面。点击高级
,选择继续前往
https://localhost/
(不安全)
。
如果不出意外的话,应该就可以正常访问了。
我在这里遇到了一个浪费了我两个小时的坑,总是显示“该网页将您重定向的次数过多”,后来逐条注释配置,发现是
location /
下proxy_pass http://127.0.0.1:80;
这一行引起的。注释掉并刷新配置后,访问正常。
至此,nginx 部分的教程完毕。