一个高性能的HTTP和反向代理web服务器

Nginx安装

前言

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。

Windows

Nginx官网有Windows版本和Linux版本,但是Windows版本的Nginx添加第三方模块比较麻烦,Github上有Windows已经编译好带第三方模块的Nginx下载,带ngx_http_proxy_connect_module模块的可以参考dyq94310/nginx-build-msys2项目,带ngx_stream_core_module模块的可以参考myfreeer/nginx-build-msys2项目。

image-20240929114159896

Linux

下载源码

#下载
wget http://nginx.org/download/nginx-1.26.2.tar.gz
#解压
tar -zxvf nginx-1.26.2.tar.gz
cd nginx-1.26.2

安装编译环境

# 其中openssl openssl-devel按需选择,使用Https是添加
yum install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

# 如果安装失败,可能需要降级
yum downgrade glibc glibc-common
yum downgrade zlib nss*
yum downgrade krb5-libs
yum downgrade openssl openssl-libs

# 查看已安装openssl开头的包
rpm -qa|grep openssl*

# 安装补丁命令,安装ngx_http_proxy_connect_module模块需要
yum install patch

image-20240929154646715

打补丁ngx_http_proxy_connect_module模块(按需)

Nginx默认不支持Https的正向代理,需要添加ngx_http_proxy_connect_module模块支持,插件和Nginx版本一一对应,通过patch命令打入补丁。

image-20240929150628075

# 解压
tart -zxvf ngx_http_proxy_connect_module-0.0.7.tar.gz
cd nginx-1.26.2

# 添加补丁
patch -p1 < /root/ngx_http_proxy_connect_module-0.0.7/patch/proxy_connect_rewrite_102101.patch

image-20240929154708022

编译安装

# 配置,支持Https的正向代理
./configure --prefix=/usr/local/nginx --add-module=/root/ngx_http_proxy_connect_module-0.0.7

# 或者,支持Https的正向代理,支持Nginx stream
./configure --prefix=/usr/local/nginx --add-module=/root/ngx_http_proxy_connect_module-0.0.7 --with-stream --with-stream_ssl_preread_module --with-stream_ssl_module

# 或者,支持Https的正向代理,支持Nginx stream,支持开启SSL,支持查看真实Ip
./configure --prefix=/usr/local/nginx --add-module=/root/ngx_http_proxy_connect_module-0.0.7 --with-stream --with-stream_ssl_preread_module --with-stream_ssl_module --with-http_ssl_module --with-http_realip_module

# worker进程运行的用户、用户组,或者修改nginx.conf配置文件,设置user www
./configure --user=www --group=www --prefix=/usr/local/nginx --add-module=/root/ngx_http_proxy_connect_module-0.0.7

# 编译和安装
make && make install

开通防火墙

# 查看防火墙
firewall-cmd --list-all
# 打开防火墙80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重启防火墙生效
systemctl reload firewalld

验证

image-20240929155946373

image-20240929160009990

Nignx常用命令

# 启动
start nginx.exe
# 或者,cmd窗口一直处于执行中,不能进行其他命令操作
nginx.exe

# 停止
nginx.exe -s stop
# 或者,stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息
nginx.exe -s quit

# 查看版本信息
nginx.exe -v

# 测试配置文件
nginx.exe -t
# 重新加载配置
nginx.exe -s reload

# Linux启动
./nginx