1.安装环境
1.1安装MSYS2+MinGW64
1.下载msys2,官方地址:http://www.msys2.org/,这里选择64位的安装器
2.安装完成之后,先别启动msys2,在 安装根目录/etc/pacman.d/ 下找到mirrorlist.mingw32、mirrorlist.mingw64和mirrorlist.msys并进行修改。
mirrorlist.mingw32文件添加一行,Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
mirrorlist.mingw64文件添加一行,Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
mirrorlist.msys文件添加一行,Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
3.在win10菜单中找到MSYS 64bit并启动MSYS2 MinGW 64-bit
4.认识下命令
pacman -Syu
=> 同步软件库并更新系统到最新状态
pacman -S package_name1 package_name2
=> 安装或者升级单个软件包,或者一列软件包(包含依赖包)
pacman -R package_name
=> 删除单个软件包
pacman -Rs package_name
=> 删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系
5.输入pacman -Syu 更新软件库, 完结后直接点击关闭按钮来关闭窗口
6.重新来一次第2个步骤(这个时候因为更新软件库的原因导致第2个步骤里面的三个文件被覆盖了)
7.使用命令安装mingw64等必要的软件(一个一个地安装)
pacman -S gcc
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-i686-toolchain
pacman -S mingw-w64-x86_64-SDL2
pacman -S mingw-w64-i686-SDL2
pacman -S base-devel
pacman -S yasm
pacman -S nasm
pacman -S make
=1.2安装VS=
1、下载地址:https://visualstudio.microsoft.com/zh-hans/vs/ 选择社区版
2、安装Visual Studio,“工作负载”界面,根据自己需求选择不同的组件,因为需要make,所以只选择了“使用C++的桌面开发”,右侧“安装详细信息”,如果无特殊需求,采用默认配置即可。“语言包”默认的就是简体中文,“安装位置”根据目录修改。
3、等待所选组件下载完成,该过程可能比较慢,耐心等待即可。
1.3安装pcre
下载地址:https://strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-64bit.msi
注意安装路径
1.4检查环境
1.4下载nginx源码与相关的包
下载地址:https://codeload.github.com/nginx/nginx/zip/refs/tags/release-1.20.1
http://nginx.org/download/nginx-1.20.1.tar.gz
下载zlib:http://www.zlib.net/zlib-1.2.11.tar.gz
下载PCRE:https://ftp.pcre.org/pub/pcre/pcre-8.45.tar.gz
下载opensll:http://distfiles.macports.org/openssl/openssl-1.1.1j.tar.gz
filter模块:git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module
注意:
1.PCRE请下载pcre-8系列,不要下载pcre2系列,要不然根本就无法编译过。
2.三个PCRE、zlib和OpenSSL的时候,请下载.tar.gz结尾的源码包,不要下载.zip的压缩包。
2.编译安装
2.1 创建相关目录解压到相应路径下
解压建议使用7-zip如果没有安装一个
创建D:\snt\soft\nginx
将nginx源码解压到该路径
到nginx路径下创建nginx-install,可以用命令也可以在图形界面操作
admin@DESKTOP-I77Q7HO MINGW64 ~
$ cd D:/snt/soft/nginx/
admin@DESKTOP-I77Q7HO MSYS /d/snt/soft/nginx/
$ ls
nginx-1.20.1
admin@DESKTOP-I77Q7HO MSYS /d/snt/soft/nginx/nginx-1.20.1
$ mkdir nginx-install
admin@DESKTOP-I77Q7HO MSYS /d/snt/soft/nginx/nginx-1.20.1
$ ls
nginx-1.20.1 nginx-install
admin@DESKTOP-I77Q7HO MSYS /d/snt/soft/nginx/nginx-1.20.1
$ cd nginx-1.20.1
admin@DESKTOP-I77Q7HO MSYS /d/snt/soft/nginx/nginx-1.20.1
$ ls
auto conf contrib docs misc src
admin@DESKTOP-I77Q7HO MSYS /d/snt/soft/nginx/nginx-1.20.1
$ ls auto/
cc feature include make options summary
configure have init module os threads
define have_headers install modules sources types
endianness headers lib nohave stubs unix
将模块和需要的包解压到D:\snt\soft\nginx\nginx-1.20.1\objs\lib路径下,如果没有这个文件夹请自行创建
2.2 编译
2.2.1 生成Makefile
注意这里需要使用msys软件注意选择64位
admin@DESKTOP-I77Q7HO MINGW64 /d/snt/soft/nginx/nginx-1.20.1
$ auto/configure \
--prefix="D:/snt/soft/nginx/nginx-install" \
--with-cc=cl --with-debug --prefix= --conf-path=conf/nginx.conf \
--pid-path=logs/nginx.pid --http-log-path=logs/access.log \
--error-log-path=logs/error.log --sbin-path=nginx.exe \
--http-client-body-temp-path=temp/client_body_temp \
--http-proxy-temp-path=temp/proxy_temp \
--http-fastcgi-temp-path=temp/fastcgi_temp \
--http-scgi-temp-path=temp/scgi_temp \
--http-uwsgi-temp-path=temp/uwsgi_temp \
--with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs/lib/pcre-8.45 \
--with-zlib=objs/lib/zlib-1.2.11 --with-openssl=objs/lib/openssl-1.1.1j \
--with-openssl-opt=no-asm --with-http_ssl_module \
--with-http_sub_module --add-module=objs/lib/ngx_http_substitutions_filter_module
出现以下显示为正常
2.2.2 编译
接下来继续执行命令:
注意这里需要使用vs,因为编译过程中需要系统的一些库。
cd D:\snt\soft\nginx\nginx-1.20.1\
nmake -f objs/Makefile
执行时间比较久,是正常的。如果没有报错,过几分钟,提示找不到引用sed,sed命令没执行没关系,exe就生成在了nginx-1.20.1\objs\目录下了。
2.2.3 创建nginx安装目录并启动
完成后执行:
1.新建nginx-install文件夹(如果已经创建请忽略)
2.拷贝源码中的conf、contrib目录到nginx-install
3.拷贝官方编译好的版本中的html目录到nginx-install
下载地址:http://nginx.org/download/nginx-1.20.1.zip
4.拷贝objs目录中生成的nginx.exe
5.新建logs和temp还有ssl文件夹
6.创建crt和key,到ssl目录
在D:\nginx下创建ssl文件夹 用于存放证书 创建私钥 (建议使用系统窗口,不要用gitBash 有涉及到选择的地方,gitBash无法选择)
openssl genrsa -des3 -out shidian.key 1024 //shidian 自己取的名字
这两步需要输入密码,输入密码后,再次重复输入确认密码。记住此密码,后面会用到。
Enter pass phrase for shidian.key:
Verifying - Enter pass phrase for shidian.key:
查看ssl目录中的key:
创建 csr 证书
openssl req -new -key shidian.key -out shidian.csr (key文件为刚才生成的文件,shidian.csr为自定义文件名)
如上图所示,执行上述命令后,需要输入信息。输入的信息中最重要的为 Common Name,这里输入的域名即为我们要使用https访问的域名。
查看csr文件:
以上步骤完成后,ssl文件夹内出现两个文件
去除密码
在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码。
复制shidian.key并重命名为shidian.key.org
可以使用此命令行,也可以使用鼠标操作 copy shidian.key shidian.key.org
去除口令,在命令行中执行此命令: openssl rsa -in shidian.key.org -out shidian.key
(shidian为自定义文件名)
如下图所示,此命令需要输入刚才设置的密码
生成crt证书 openssl x509 -req -days 365 -in shidian.csr -signkey shidian.key -out shidian.crt
最后生成证书如下:
测试
修改nginx配置
修改配置文件之前记得备份
upstream nodejs__upstream2 {
server 127.0.0.1:8080; # 需要监听的端口名 我用的
keepalive 64;
}
server {
listen 443 ssl;
server_name localhost; # 配置的https的域名
ssl_certificate D:/soft/soft/nginx-1.20.1/ssl/shidian.crt; # 这个是证书的crt文件所在目录
ssl_certificate_key D:/soft/soft/nginx-1.20.1/ssl/shidian.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;
}
}
}
重启ngingx
.\nginx.exe -s reload
访问https://127.0.0.1/ 进行测试
或者直接拷贝已经创建号的crt和key到ssl目录下
7.查看目录
这个可以启动nginx.exe查看是否报错,访问localhost或者127.0.0.1。
查看https是否成功:
将配置文件中443的注释取消,并添加crt和key
server {
listen 443 ssl;
server_name localhost;
ssl_certificate D:/snt/soft/nginx/nginx-install/ssl/server.crt;
ssl_certificate_key D:/snt/soft/nginx/nginx-install/ssl/server.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;
}
}
重启nginx.exe
admin@DESKTOP-I77Q7HO MINGW64 /d/snt/soft/nginx/nginx-install
$ ./nginx.exe -s reload
查看版本与模块
admin@DESKTOP-I77Q7HO MINGW64 /d/snt/soft/nginx/nginx-install
$ ./nginx.exe -V
此时Nginx便安装到了D:/snt/soft/nginx/nginx-install目录下。
参考文档
https://blog.csdn.net/qq_24054301/article/details/112131057
https://www.zeelis.com/t/289.html
https://blog.csdn.net/weixin_34387468/article/details/90104406
https://blog.csdn.net/skymouse2002/article/details/88971071?share_token=2bb5274e-9aa4-46c5-aca1-f12ea625623c&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_android&utm_campaign=client_share
参考文档
https://www.cnblogs.com/jiangwangxiang/p/8481661.html
https://blog.csdn.net/renanrenan/article/details/83304557
https://www.cnblogs.com/luxiaoyao/p/10034009.html