JiFu's Wiki JiFu's Wiki
首页
  • HTML
  • JavaScript
  • NodeJS
  • Vuejs
  • 微信小程序
  • Python
  • 数据库
  • 中间件
  • 算法
  • 软件工程
  • Wordpress
  • iOS开发
  • Android开发
  • Linux
  • Windows
  • MacOS
  • Docker
  • Vim
  • VSCode
  • Office
  • 其他
  • Photoshop
  • Sketch
  • Mac
  • 游戏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
首页
  • HTML
  • JavaScript
  • NodeJS
  • Vuejs
  • 微信小程序
  • Python
  • 数据库
  • 中间件
  • 算法
  • 软件工程
  • Wordpress
  • iOS开发
  • Android开发
  • Linux
  • Windows
  • MacOS
  • Docker
  • Vim
  • VSCode
  • Office
  • 其他
  • Photoshop
  • Sketch
  • Mac
  • 游戏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 数据库

  • Python

  • 中间件

    • Nginx

      • Nignx介绍
      • Nginx正向代理与Linux系统设置代理上网
        • Nginx介绍
        • Nginx的应用场景
        • 什么是代理
        • 编译安装
        • 配置server
        • 设置http代理
        • 设置https代理
      • Nginx配置跨域请求 Access-Control-Allow-Origin *
      • 体系化带你全面认识 Nginx
      • 高性能NginxHTTPS调优
      • 高性能Web服务器 - Nginx配置详解
    • Gogs

    • Sentry

    • Jenkins

    • Shadowsocks

    • Logstash

    • RabbitMQ

    • Gitlab

    • 宝塔

  • 算法

  • 软件工程

  • Wordpress

  • 后端技术
  • 中间件
  • Nginx
JiFu
2023-10-18
目录

Nginx正向代理与Linux系统设置代理上网

# 介绍

# Nginx介绍

Nginx是一个http服务器。是一个使用c语言开发的高性能的http服务器及反向代理服务器。Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

# Nginx的应用场景

  1. http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

  2. 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。

  3. 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

# 什么是代理

nginx的正向代理,只能代理http、tcp等,不能代理https请求。有很多人不是很理解具体什么是nginx的正向代理、什么是反向代理。下面结合自己的使用做的一个简介:

# 正向代理

所谓正向代理就是内网服务器主动要去请求外网的地址或服务,所进行的一种行为。内网服务---访问--->外网

# 反向代理

所谓反向代理就是外网要访问内网服务而进行的一种行为。 外网----请求--->内网服务

# 安装Nginx

# yum方式

yum安装,需安装第三方yum源,因为nginx默认不在centos的yum源中所以需更新

yum install wget #安装下载工具
wget http://www.atomicorp.com/installers/atomic #下载
sh ./atomic #安装
yum check-update #更新yum源 有的需要更新几次 才有nginx最新版本 否则是老版本nginx
yum remove httpd* php*  #删除系统自带的软件包 也可加mysql*前提备份数据库
yum install nginx #安装nginx根据提示输入y进行安装
chkconfig nginx on #设置nginx开机启动
#检查服务配置文件
sudo nginx -t
#nginx: configuration file /etc/nginx/nginx.conf test is successful  表示配置文件符合标准配置,解析成功
#sudo service nginx {start|stop|status|restart|reload|configtest|}
#启动服务
sudo service nginx start
#停止服务
sudo service nginx stop
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 编译安装

wget http://nginx.org/download/nginx-1.7.8.tar.gz
tar -zxvf nginx-1.7.8.tar.gz
cd nginx-1.7.8
./configure
make && make install
1
2
3
4
5

# nginx负载均衡

由于整片篇幅,此处只介绍nginx的负载均衡简单的配置。 nginx 的 upstream默认是以轮询的方式实现负载均衡,这种方式中,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

另外一种方式是ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题

修改 /etc/nginx/nginx.conf

#负载均衡配置
upstream backend {
  #ip_hash;
  server 192.168.20.193;      // server 1
  server 192.168.20.194;      // server 2
}
1
2
3
4
5
6

# Server端 - 配置正向代理

# 配置server

server {
  # 配置DNS解析IP地址,比如 Google Public DNS,以及超时时间(5秒)
  resolver 8.8.8.8;    # 必需
  resolver_timeout 5s;

  # 监听端口
  listen 8080;

  access_log  /home/reistlin/logs/proxy.access.log;
  error_log   /home/reistlin/logs/proxy.error.log;

  location / {
    # 配置正向代理参数
    proxy_pass $scheme://$host$request_uri;
    # 解决如果URL中带"."后Nginx 503错误
    proxy_set_header Host $http_host;

    # 配置缓存大小
    proxy_buffers 256 4k;
    # 关闭磁盘缓存读写减少I/O
    proxy_max_temp_file_size 0;
     # 代理连接超时时间
    proxy_connect_timeout 30;

    # 配置代理服务器HTTP状态缓存时间
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 301 1h;
    proxy_cache_valid any 1m;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# Client端 - 配置代理上网

# 设置http代理

# 修改配置

修改/etc/profile,增加以下内容:

http_proxy=http://[代理地址]:[代理地址的端口]/
https_proxy=http://[代理地址]:[代理地址的端口]/
export http_proxy https_proxy
1
2
3

# 永久生效代理

vim .bashrc
export http_proxy=http://192.168.1.9:8080
source  .bashrc
1
2
3

# 马上生效

source /etc/profile

# 取消代理

unset http_proxy

# 设置https代理

默认的情况下,使用nginx做正向代理可以解析http请求, 对于诸如baidu.com这样的https请求,nginx默认并不支持,不过我们可以借助第三方模块来实现。

# 安装nginx第三方模块

这里我们需要借助大神开发的【ngx_http_proxy_connect_module】

首先要确保你安装了patch,gcc、gcc++、pcre、zlib,这些都是我们用到的依赖软件或静态库

yum group install -y "Development Tools"
yum install -y patch pcre-devel pcre zlib-devel zlib
1
2

然后去github下载下来这个模块,就是直接去官网把整个目录下下来,解压放到你centos的某个目录下。 再下载nginx、按照官网说明执行以下命令

wget http://nginx.org/download/nginx-1.9.2.tar.gz
tar -xzvf nginx-1.9.2.tar.gz
cd nginx-1.9.2/
patch -p1 < /path/to/ngx_http_proxy_connect_module/proxy_connect.patch
./configure --add-module=/path/to/ngx_http_proxy_connect_module
make && make install
1
2
3
4
5
6

注意其中的【/path/to/ngx_http_proxy_connect_module】,指的就是你从github上,下载的这个模块的存放路径。

完成后,/usr/local/nginx就是编译后的nginx的路径。

# 配置config

/usr/local/nginx/conf/nginx.conf

server {
    resolver 192.168.31.1;
    resolver_timeout 5s;
    listen       8889;
    proxy_connect;
    proxy_connect_allow            443 563;
    proxy_connect_connect_timeout  10s;
    proxy_connect_read_timeout     10s;
    proxy_connect_send_timeout     10s;

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

      proxy_pass http://$host;
      proxy_set_header Host $host;


      proxy_buffers 256 4k;
      proxy_max_temp_file_size 0;

      proxy_connect_timeout 30;

      proxy_cache_valid 200 302 10m;
      proxy_cache_valid 301 1h;
      proxy_cache_valid any 1m;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 测试配置正确性

nginx -t

# 重启nginx并生效配置

nginx -s reload

# 参考资料

-centos使用nginx反向代理实现负载均衡 (opens new window) -CentOS7 通过代理上网 (opens new window) -nginx做正向代理(Centos7,支持http和https) (opens new window)

上次更新: 2024/08/11, 01:59:03
Nignx介绍
Nginx配置跨域请求 Access-Control-Allow-Origin *

← Nignx介绍 Nginx配置跨域请求 Access-Control-Allow-Origin *→

最近更新
01
WPS快捷键
05-21
02
Disable notification "to get future google chrome updates you'll need macos 10.13 or later" on mac
05-14
03
MacOS软件推荐
04-30
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Ji Fu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式