基于CentOS 7配置Nginx正向代理

简介: Nginx是一款以轻量级、低内存开销、支持缓存、支持反向代理,负载均衡,电子邮件服务而著称。对于鲜为人知的是,它还可以作为一个简单易用的正向代理服务器。

Nginx是一款以轻量级、低内存开销、支持缓存、支持反向代理,负载均衡,电子邮件服务而著称。对于鲜为人知的是,它还可以作为一个简单易用的正向代理服务器。本文简要描述这个正向代理功能并给出演示,供大家参考。

有关Nginx的安装请参考
CentOS 7下yum方式安装Nginx
Nginx 概述及日常管理
Nginx基于IP,端口,域名配置虚拟主机

一、配置nginx正向代理服务端配置

演示环境
# more /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

当前主机名称及ip
# hostname
centos7-router

# ip addr|grep -inet|grep global
9: inet 172.24.8.254/24 brd 172.24.8.255 scope global eno16777728
15: inet 192.168.1.175/24 brd 192.168.1.255 scope global dynamic eno33554960

当前主机的dns配置
# more /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1

nginx版本
# nginx -v
nginx version: nginx/1.12.2

nginx正向代理配置
# vim /etc/nginx/conf.d/proxy.conf
server {
    listen 8080;            ##指定一个非缺省端口用于提供代理服务
    server_name localhost;
    resolver 192.168.1.1;    ##指定DNS服务器IP

        location / {      
            proxy_pass $scheme://$host$request_uri;
            proxy_set_header Host $http_host;

            ##proxy_pass:设置代理服务器的协议和地址以及位置应映射到的可选URI。协议可指定http或https
            ##proxy_set_header:与许字段重新定义或附加请求标头传递给代理服务器

            proxy_buffers 256 4k;          ## Author : Leshami
            proxy_max_temp_file_size 0;    ## Blog  : http://blog.csdn.net/leshami

            ##proxy_buffers:为单个连接设置用于从代理服务器读取响应的缓冲区个数和缓冲区大小
            ##proxy_max_temp_file_size:禁用缓冲对临时文件的响应

            proxy_connect_timeout 30;        ##代理连接超时时间

            proxy_cache_valid 200 302 10m;  ##为不同的响应代码设置缓存时间
            proxy_cache_valid 301 1h;
            proxy_cache_valid any 1m;
    }
}

# systemctl reload nginx.service
# ss -nltp|grep nginx
LISTEN 0 128 *:8080 *:* users:(("nginx",pid=110780,fd=10),("nginx",pid=19774,fd=10))
LISTEN 0 128 *:80 *:* users:(("nginx",pid=110780,fd=6),("nginx",pid=19774,fd=6))

防火墙配置
# firewall-cmd --add-port=8080/tcp --permanent
# firewall-cmd --reload

二、客户端配置

客户端主机名及IP
    # hostname
    centos7-web.example.com
    # ip addr|grep inet|grep global
    inet 172.24.8.128/24 brd 172.24.8.255 scope global eno16777728

临时设置当前环境变量http_proxy
    # export http_proxy=http://172.24.8.254:8080

    # curl -I http://www.baidu.com
    HTTP/1.1 200 OK
    Server: nginx/1.12.2
    Date: Tue, 24 Oct 2017 14:59:44 GMT
    Content-Type: text/html
    Content-Length: 277
    Connection: keep-alive
    Last-Modified: Mon, 13 Jun 2016 02:50:26 GMT
    ETag: "575e1f72-115"
    Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
    Pragma: no-cache
    Accept-Ranges: bytes

清除http_proxy
    # unset http_proxy

演示wget直接使用代理参数方式访问网络
    # wget -e "http_proxy=http://172.24.8.254:8080" www.baidu.com
    --2017-10-24 23:03:48-- http://www.baidu.com/
    Connecting to 172.24.8.254:8080... connected.
    Proxy request sent, awaiting response... 200 OK
    Length: 2381 (2.3K) [text/html]
    Saving to: ‘index.html’

演示curl直接使用代理参数方式访问网络
    # curl -x http://172.24.8.254:8080 -I http://www.baidu.com
    HTTP/1.1 200 OK
    Server: nginx/1.12.2
    Date: Tue, 24 Oct 2017 15:07:39 GMT
    Content-Type: text/html
    Content-Length: 277
    Connection: keep-alive
    Last-Modified: Mon, 13 Jun 2016 02:50:26 GMT
    ETag: "575e1f72-115"
    Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
    Pragma: no-cache
    Accept-Ranges: bytes

如果需要用户名密码,格式
    curl -x "http://user:pwd@host:port" www.baidu.com

配置http_proxy以及ftp_proxy到应用程序,如yum代理配置
/etc/yum.conf里面增加proxy=proxy_addr:port。

    # unset http_proxy
    # cp /etc/yum.conf /etc/yum.conf.bk
    # echo "proxy=http://172.24.8.254:8080">>/etc/yum.conf

    # tail -1 /etc/yum.conf
    proxy=http://172.24.8.254:8080

    # vim /etc/yum.repo.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1

    # yum clean all
    # yum repolist
    Loaded plugins: fastestmirror, langpacks
    nginx | 2.9 kB 00:00:00
    nginx/x86_64/primary_db | 31 kB 00:00:01
    Determining fastest mirrors
    repo id repo name status
    nginx/x86_64 nginx repo 90
    repolist: 90
    [root@centos7-web yum.repos.d]# yum makecache
    Loaded plugins: fastestmirror, langpacks
    nginx | 2.9 kB 00:00:00
    (1/2): nginx/x86_64/other_db | 16 kB 00:00:00
    (2/2): nginx/x86_64/filelists_db | 39 kB 00:00:01
    Loading mirror speeds from cached hostfile
    Metadata Cache Created

全局配置
    # cp /etc/skel/.bash_profile /etc/skel/.bash_profile.bk
    # vim /etc/skel/.bash_profile
    export http_proxy=http://172.24.8.254:8080
    export https_proxy=http://172.24.8.254:8080

    # source /etc/skel/.bash_profile
    # env |grep http
    http_proxy=http://172.24.8.254:8080
    https_proxy=http://172.24.8.254:8080

DBA牛鹏社(SQL/NOSQL/LINUX)

目录
相关文章
|
28天前
|
网络协议 应用服务中间件 网络安全
Nginx,正向代理
本文介绍了Nginx作为HTTPS正向代理的两种方案:HTTP CONNECT隧道(7层)和NGINX stream(4层)。HTTP CONNECT隧道需要客户端手动配置代理,通过CONNECT请求建立隧道;而NGINX stream则更适合透明代理,利用SNI字段实现流量转发。文章详细讲解了两者的原理、环境搭建、使用场景及常见问题,并提供了配置示例和最佳实践建议。内容转载自阿里云开发者社区@怀知的文章,推荐读者参阅原文获取更多信息。感谢您的阅读!
269 80
Nginx,正向代理
|
1月前
|
Java
CentOS7.8配置Adoptium-Java17运行环境
本指南介绍如何设置清华镜像源并安装 Temurin-17-JRE 运行环境。首先,编辑 `/etc/yum.repos.d/adoptium.repo` 文件,配置清华镜像源。接着,使用 `yum install -y temurin-17-jre` 命令安装 Temurin-17-JRE,并通过 `java --version` 验证安装成功。相关配置和操作界面截图附后。
55 8
|
1月前
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。
|
2月前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
208 11
|
2月前
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
217 13
|
3月前
|
前端开发 应用服务中间件 定位技术
Nginx 如何代理转发传递真实 ip 地址?
【10月更文挑战第32天】
649 5
Nginx 如何代理转发传递真实 ip 地址?
|
3月前
|
负载均衡 前端开发 JavaScript
Nginx 代理多服务
以上是 Nginx 代理多服务的几种常见方式,在实际应用中,可以根据具体的业务需求和系统架构选择合适的代理方式,并结合其他 Nginx 的功能和配置来优化和完善系统的性能和功能。
|
3月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
350 2
|
3月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
245 7
|
1月前
|
存储 应用服务中间件 Linux
nginx配置证书和私钥进行SSL通信验证
nginx配置证书和私钥进行SSL通信验证
69 4