RHEL8/9上编译安装Nginx并配置正向代理服务

Nginx正向代理是一种服务器端的代理模式,它代表客户端(如浏览器)向其他服务器发起请求,获取资源后再将其返回给客户端。以下是关于安装Nginx服务并配置正向代理的详细介绍:

一、安装编译环境

[root@yunweixia.com nginx-1.26.1]# yum -y install gcc wget automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed pcre-devel openssl-devel make

二、编译安装Nginx

1,下载最新的Nginx版本

[root@yunweixia.com nginx-1.26.1]# wget http://nginx.org/download/nginx-1.26.1.tar.gz

2,然后就是将下载下来的Nginx解压缩。

[root@yunweixia.com nginx-1.26.1]# tar zxvf nginx-1.26.1.tar.gz

3,进入解压缩后的Nginx目录。如果你要定制版本号可以更改源码目录src/core/nginx.h文件。

[root@yunweixia.com nginx-1.26.1]# cd nginx-1.26.1/

4,创建一个nginx目录用来存放运行的临时文件夹。

[root@yunweixia.com nginx-1.26.1]# mkdir -p /etc/nginx
[root@yunweixia.com nginx-1.26.1]# mkdir -p /var/cache/nginx
[root@yunweixia.com nginx-1.26.1]# useradd app01

5.安装git

[root@yunweixia.com nginx-1.26.1]# yum install git -y

6.下载ngx_http_proxy模块

[root@yunweixia.com nginx-1.26.1]# git clone https://github.com/chobits/ngx_http_proxy_connect_module
[root@yunweixia.com nginx-1.26.1]# cp -arf ngx_http_proxy_connect_module/ nginx-1.26.1

7.安装patch

[root@yunweixia.com nginx-1.26.1]# yum install -y patch

8.添加补丁到源代码

[root@yunweixia.com nginx-1.26.1]# cd nginx-1.26.1
[root@yunweixia.com nginx-1.26.1]# patch -p1 < ./ngx_http_proxy_connect_module/patch/proxy_connect.patch

9.开始configure Nginx

# 使用简单编译(两者选一)
[root@yunweixia.com nginx-1.26.1]# ./configure --add-module=./ngx_http_proxy_connect_module

或者

# 使用复杂编译(两者选一)
[root@yunweixia.com nginx-1.26.1]# ./configure \
--prefix=/etc/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=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--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 \
--user=app01 \
--group=app01 \
--with-pcre \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--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_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-http_v2_module \
--with-threads \
--with-stream \
--with-stream_ssl_module \
--add-module=./ngx_http_proxy_connect_module

10.接着继续编译。

[root@yunweixia.com nginx-1.26.1]# make

11.安装Nginx

[root@yunweixia.com nginx-1.26.1]# make install

12.配置systemctl控制的Nginx服务,将以下下内容复制输入到新建的nginx.service文件中。

[root@yunweixia.com nginx-1.26.1]# vi /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

13.使用systemctl来操作nginx服务,并开机启动。

[root@yunweixia.com nginx-1.26.1]# systemctl enable nginx.service

14.尝试管理Nginx。

[root@yunweixia.com nginx-1.26.1]# systemctl status nginx
[root@yunweixia.com nginx-1.26.1]# systemctl start nginx
[root@yunweixia.com nginx-1.26.1]# systemctl stop nginx

三、配置示例

以下是一个简单的Nginx正向代理配置示例,仅允许客户端通过正向代理访问特定的域名:

server {
    # 监听端口
    listen 3128;
    # DNS 解析器配置
    resolver 8.8.8.8 ipv6=off;
    # 日志文件路径
    access_log /var/log/nginx/proxy.access.log;
    error_log /var/log/nginx/proxy.error.log;
    # 定义允许的主机映射
    map $host $allowed_host {
        default 0;
        aliyuncs.com 1;
        baidu.com 1;
        yunweixia.com 1;
    }
    # 缓存配置
    #`/var/cache/nginx/proxy`:缓存文件存储根目录。
    #`levels=1:2`:设定缓存目录三层结构,提升管理效率。
    #`keys_zone=my_cache:10m`:名为 `my_cache` 的共享内存区,大小 10MB 存缓存键等。
    #`max_size=1g`:缓存空间最大为 1GB,超限时删旧缓存。
    #`inactive=60m`:60 分钟未访问的缓存文件可被删除。
    #`use_temp_path=off`:直接写缓存文件到最终目录,提升性能。 
    proxy_cache_path /var/cache/nginx/proxy levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
    proxy_cache my_cache;
    # 代理连接配置
    proxy_connect;
    proxy_connect_allow 443 563;
    proxy_connect_timeout 120s;
    proxy_read_timeout 120s;
    proxy_send_timeout 120s;
    # 处理请求的位置块
    location / {
        if ($allowed_host = 0) {
            return 403;
        }
        proxy_pass http://$host;
        proxy_set_header Host $host;
    }

    # 如果需要启用 SSL/TLS,请取消以下行的注释,并提供证书和密钥路径
    # ssl_certificate /path/to/your/cert.pem;
    # ssl_certificate_key /path/to/your/key.pem;
    # listen 3128 ssl;
}

四、结论

按照本文可以完整的在RHEL8/RHEL9操作系统上编译安装Nginx并配置正向代理服务,并可以通过系统服务来启动、关闭、重启nginx服务。

原创文章,作者:运维侠,如若转载,请注明出处:https://www.yunweixia.com/solutions/rhel8-9-nginx-compile-install-forward-proxy-configuration.html

(0)
运维侠的头像运维侠共建用户
上一篇 2025年5月25日 18:11
下一篇 2025年5月27日 17:13

相关推荐

发表回复

登录后才能评论