Nginx配置正向代理访问互联网(支持http、https)

一、Nginx简介

Nginx(engine x)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好。

Nginx相对于Apache优点如下:

1)高并发响应性能非常好,官方Nginx处理静态文件并发5w/s;

2)负载均衡及反向代理性能非常强;

3)系统内存和CPU占用率低;

4)可对后端服务进行健康检查;

5)支持PHP cgi方式和FastCGI方式;

6)可以作为缓存服务器、邮件代理服务器;

7)配置代码简洁且容易上手;

8)支持 SSL 和 TLSSNI。

二、Nginx工作原理

Nginx WEB服务器最主要就是各种模块的工作,模块从结构上分为核心模块、基础模块和第三方模块,其中三类模块分别如下:

1、核心模块:HTTP模块、EVENT模块和MAIL模块等;

2、基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块;

3、第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块、Limit_req模块、Upstream check module等;

Nginx的模块从功能上分为如下三类。

1)Handlers(处理器模块):此类模块直接处理请求,并进行输出内容和修改headers信息等操作,Handlers处理器模块一般只能有一个;

2)Filters (过滤器模块):此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出;

3)Proxies (代理类模块):此类模块是Nginx的HTTP Upstream之类的模块,这些模块主要与后端一些服务比如FastCGI等进行交互,实现服务代理和负载均衡等功能。

Nginx由Nginx内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端的请求映射到一个location block,而location是Nginx配置中的一个指令,用于访问的URL匹配,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作,如图所示:

Nginx配置正向代理访问互联网(支持http、https)

三、安装Nginx

1服务器环境准备

序号

IP地址

操作系统

用途

1

192.168.56.138

CentOS 7.9.2009

代理服务器

2

192.168.56.137

CentOS 7.9.2009

Linux客户端

3

192.168.56.136

Windows 10

Windows客户端

2安装Nginx

1)安装依赖包

[root@localhost ~]# yum -y install pcre pcre-devel openssl openssl-devel gcc gcc-c++ wget zlib zlib-devel

2)下载Nginx源码包

[root@localhost ~]# wget -c http://nginx.org/download/nginx-1.18.0.tar.gz

3)解压Nginx源码包

[root@localhost ~]# tar zxf nginx-1.18.0.tar.gz

4)下载正向代理插件

[root@localhost ~]# yum -y install git patch

[root@localhost ~]# cd /opt

[root@localhost opt]# git clone https://gitee.com/web_design_of_web_frontend/ngx_http_proxy_connect_module.git

5)编译正向代理插件

[root@localhost opt]# cd ~/nginx-1.18.0

[root@localhost nginx-1.18.0]# patch -p1 < /opt/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_1018.patch

6)预编译Nginx

[root@localhost nginx-1.18.0]# useradd -s /sbin/nologin nginx

[root@localhost nginx-1.18.0]# ./configure –prefix=/usr/local/nginx –user=nginx –group=nginx –with-http_ssl_module –with-http_stub_status_module –with-stream –with-pcre –with-http_gzip_static_module –with-http_realip_module –add-module=/opt/ngx_http_proxy_connect_module

7)安装Nginx

[root@localhost nginx-1.18.0]# make && make install

8)配置正向代理

[root@localhost nginx-1.18.0]# cp /usr/local/nginx/conf/nginx.conf{,_bak}

[root@localhost nginx-1.18.0]# vim /usr/local/nginx/conf/nginx.conf

    user nginx nginx;
    worker_processes auto;
    pid /var/run/nginx.pid;
events {
    use epoll;
    worker_connections 10240;
    multi_accept on;
}
http {
    include mime.types;
    default_type application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /usr/local/nginx/logs/access.log main;
    error_log /usr/local/nginx/logs/error.log warn;
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 120;
    tcp_nodelay on;
    server_tokens off;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 64k;
    gzip_http_version 1.1;
    gzip_comp_level 4;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
    client_max_body_size 10m;
    client_body_buffer_size 128k;
    proxy_connect_timeout 90;
    proxy_send_timeout 90;
    proxy_buffer_size 4k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    large_client_header_buffers 4 4k;
    client_header_buffer_size 4k;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 1;
    server {
        listen 8080;
        resolver 114.114.114.114 8.8.8.8;
        proxy_connect;
        proxy_connect_allow 443 563;
        proxy_connect_timeout 30s;
        proxy_connect_send_timeout 60s;
        proxy_connect_read_timeout 60s;
        location / {
           proxy_pass http://$host;
           proxy_set_header Host $host;
        }
    }   
}

9)创建systemctl管理配置文件

[root@localhost nginx-1.18.0]# vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=Nginx Server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

[root@localhost nginx-1.18.0]# systemctl daemon-reload

10)启动Nginx

[root@localhost nginx-1.18.0]# ln -sf /usr/local/nginx/sbin/nginx /usr/bin

[root@localhost nginx-1.18.0]# nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@localhost nginx-1.18.0]# systemctl start nginx

11)查看Nginx进程和端口

[root@localhost nginx-1.18.0]# ps -ef | grep nginx

[root@localhost nginx-1.18.0]# netstat -lntup | grep nginx

四、Linux客户端验证

1、访问http网站

[root@localhost ~]# ping baidu.com

ping: baidu.com: Name or service not known

[root@localhost ~]# curl -I –proxy 192.168.56.138:8080 http://www.baidu.com

HTTP/1.1 200 OK

Server: nginx

Date: Tue, 11 Jul 2023 02:40:39 GMT

Content-Type: text/html

Content-Length: 277

Connection: keep-alive

Accept-Ranges: bytes

Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform

Etag: “575e1f72-115”

Last-Modified: Mon, 13 Jun 2016 02:50:26 GMT

Pragma: no-cache

2、访问https网站

[root@localhost ~]# curl -I –proxy 192.168.56.138:8080 https://www.baidu.com

HTTP/1.1 200 Connection Established

Proxy-agent: nginx

 

HTTP/1.1 200 OK

Accept-Ranges: bytes

Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform

Connection: keep-alive

Content-Length: 277

Content-Type: text/html

Date: Tue, 11 Jul 2023 03:19:59 GMT

Etag: “575e1f6d-115”

Last-Modified: Mon, 13 Jun 2016 02:50:21 GMT

Pragma: no-cache

Server: bfe/1.0.8.18

3、Yum设置代理

[root@localhost ~]# vim /etc/yum.conf

proxy=http://192.168.56.138:8080

[root@localhost ~]# yum -y install iotop

Nginx配置正向代理访问互联网(支持http、https)-图片1

4、wget设置代理

[root@localhost ~]# vim /etc/wgetrc

proxy=http://192.168.56.138:8080

[root@localhost ~]# wget https://download.redis.io/releases/redis-6.2.13.tar.gz

Nginx配置正向代理访问互联网(支持http、https)

5、全局配置代理

[root@localhost ~]# vim /etc/profile

http_proxy=http://192.168.56.138:8080
export http_proxy

[root@localhost ~]# source /etc/profile

[root@localhost ~]# curl -I http://www.baidu.com

HTTP/1.1 200 OK

Server: nginx

Date: Tue, 11 Jul 2023 03:00:23 GMT

Content-Type: text/html

Content-Length: 277

Connection: keep-alive

Accept-Ranges: bytes

Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform

Etag: “575e1f72-115”

Last-Modified: Mon, 13 Jun 2016 02:50:26 GMT

Pragma: no-cache

[root@localhost ~]# curl -I https://www.baidu.com

HTTP/1.1 200 Connection Established

Proxy-agent: nginx

 

HTTP/1.1 200 OK

Accept-Ranges: bytes

Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform

Connection: keep-alive

Content-Length: 277

Content-Type: text/html

Date: Tue, 11 Jul 2023 04:14:03 GMT

Etag: “575e1f72-115”

Last-Modified: Mon, 13 Jun 2016 02:50:26 GMT

Pragma: no-cache

Server: bfe/1.0.8.18

五、Windows客户端验证

1、打开”控制面板”或”IE浏览器”-“Internet选项”-“连接”选项卡-“局域网设置”-“代理服务器”,勾选”为LAN使用代理服务器”,地址192.168.56.138,端口8080,确定。

Nginx配置正向代理访问互联网(支持http、https)-图片2

Nginx配置正向代理访问互联网(支持http、https)

Nginx配置正向代理访问互联网(支持http、https)

Nginx配置正向代理访问互联网(支持http、https)

原创文章,作者:admin,如若转载,请注明出处:https://hostingchat.cn/1595.html

(0)
admin的头像admin
上一篇 2023年6月9日 下午2:19
下一篇 2023年7月12日 上午11:14

相关推荐

  • Nginx配置使用GeoIP2模块

    一、Nginx简介 Nginx(engine x)是一个免费的、开源的、高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫…

    2023年4月12日
    000
  • Nginx参数详解+Rewrite规则

    Nginx参数详解 Nginx常用配置参数有upstream,主要用于均衡后端多个实例: Nginx 的upstream目前支持5种算法分配方式: 轮询(默认rr round ro…

    2018年1月18日
    000
  • Linux环境Nginx动态添加模块

    说明: 有时我们需要在现有的web服务器上增加新的模块实现更为丰富的功能,Nginx算是比较常用的web服务器,但是nginx也不仅仅只可以做web服务器,只要有对应的插件还可用作…

    2020年4月9日
    000
  • Nginx+fancy实现漂亮的索引目录

    ngx-fancyindex模块的简介 Nginx Web 服务器自带的目录浏览功能看起来并不是那么的美观,我们可以使用ngx-fancyindex插件来美化目录浏览功能。 Ngi…

    2018年5月18日
    000
  • Nginx版本升级与降级

    Nginx平滑升级概述 Nginx方便地帮助我们实现了平滑升级。其原理简单概括,就是 在不停掉老进程的情况下,启动新进程。 老进程负责处理仍然没有处理完的请求,但不再接受处理请求。…

    2017年12月19日
    000
  • Nginx启用Status状态页面

    一、Nginx启用Status状态页面 Nginx可以通过with-http_stub_status_module模块来监控Nginx服务器的状态信息。 1、通过nginx -V来…

    2019年7月3日
    000
  • Linux安装Nginx(Yum方式)

    一、Nginx简介 Nginx(engine x)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第…

    2023年3月7日
    000
  • Debian 12.7安装Nginx

    一、Nginx简介 Nginx(engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量…

    2024年11月7日
    000
  • Linux环境离线安装Nginx

    一、Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄…

    2024年10月16日
    000
  • Nginx入门简介及安装

    一、Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问…

    2017年12月14日
    000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注