Nginx编译安装

CentOS9编译环境准备

dnf -y install wget zip unzip gcc gcc-c++ make pcre pcre-devel openssl openssl-devel zlib zlib-devel perl-devel perl-ExtUtils-Embed gd gd-devel libxslt-devel libxml2-devel libmaxminddb-devel GeoIP-devel

Ubuntu22/debian 编译环境准备

apt -y install wget zip unzip gcc g++ make libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev libperl-dev libgd-dev libxml2 libxml2-dev libxslt-dev libmaxminddb-dev libgeoip-dev

编译前准备

# 创建编译目录
mkdir /data
cd /data

# 下载稳定版nginx安装包、以及Geoip2模块,并解压。发文前最新稳定版是1.22.1。请到官网查看最新的稳定版
wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar -zxvf nginx-1.22.1.tar.gz
wget -c https://github.com/leev/ngx_http_geoip2_module/archive/refs/tags/3.4.zip -O geoip2.zip
unzip geoip2.zip

# 创建配置目录、临时文件目录
mkdir /etc/nginx
mkdir -p /var/cache/nginx

# 新建用户和组
useradd -s /sbin/nologin -M nginx

# 进入到nginx解压目录
cd nginx-1.22.1

 

编译配置

./configure \
–prefix=/usr/local/nginx \
–sbin-path=/usr/sbin/nginx \
–conf-path=/etc/nginx/nginx.conf \
–error-log-path=/var/log/nginx/error.log \
–http-log-path=/var/log/nginx/access.log \
–pid-path=/run/nginx.pid \
–lock-path=/var/run/nginx.lock \
–user=nginx \
–group=nginx \
–http-client-body-temp-path=/var/cache/nginx/client_temp \
–http-proxy-temp-path=/var/cache/nginx/proxy_temp \
–http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
–http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
–http-scgi-temp-path=/var/cache/nginx/scgi_temp \
–with-file-aio \
–with-threads \
–with-compat \
–with-http_ssl_module \
–with-http_v2_module \
–with-http_realip_module \
–with-http_addition_module \
–with-http_xslt_module=dynamic \
–with-http_image_filter_module=dynamic \
–with-http_geoip_module=dynamic \
–with-http_sub_module \
–with-http_dav_module \
–with-http_flv_module \
–with-http_mp4_module \
–with-http_gunzip_module \
–with-http_gzip_static_module \
–with-http_auth_request_module \
–with-http_random_index_module \
–with-http_secure_link_module \
–with-http_degradation_module \
–with-http_slice_module \
–with-http_stub_status_module \
–with-http_perl_module=dynamic \
–with-mail=dynamic \
–with-mail_ssl_module \
–with-stream \
–with-stream_ssl_module \
–with-stream_realip_module \
–with-stream_geoip_module=dynamic \
–with-stream_ssl_preread_module \
–add-module=/data/ngx_http_geoip2_module-3.4 \
–with-debug

 

编译和安装

make && make install

 

清除编译配置

make clean
rm -rf Makefile objs

 

System Daemon服务模版

nano /etc/systemd/system/nginx.service

Centos

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStartPost=/usr/bin/sleep 0.5
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true

[Install]
WantedBy=multi-user.target

 

Ubuntu/debian

[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g ‘daemon on; master_process on;’
ExecStartPost=/usr/bin/sleep 0.5
ExecStart=/usr/sbin/nginx -g ‘daemon on; master_process on;’
ExecReload=/usr/sbin/nginx -g ‘daemon on; master_process on;’ -s reload
ExecStop=-/sbin/start-stop-daemon –quiet –stop –retry QUIT/5 –pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

 

路径分流

server
{
listen 8080;
location /hk {
proxy_pass http://192.168.0.1:20000;
proxy_intercept_errors on;
error_page 400 = http://name.yourdomain/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
proxy_read_timeout 600s;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /tw {
proxy_pass http://192.168.0.2:20010;
proxy_intercept_errors on;
error_page 400 = http://name.yourdomain/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
proxy_read_timeout 600s;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

systemctl daemon-reload
systemctl start nginx
systemctl status nginx