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