linux_nginx反向代理

Posted 北门吹雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux_nginx反向代理相关的知识,希望对你有一定的参考价值。

什么代理?

       代理他人工作

什么是正向代理和反向向代理,他们之间的区别?

       这两个代理很类似,但扮演了两个不同角色,一个站在用户角度,一个站在服务端角度

       正向代理: 帮助用户请求服务

       返向代理:帮助服务均衡用户的请求

nginx反向代理使用

       Nginx支持L7,1.9以上版本支持L4

       # L7 L4 相当于网络7层模型,L7表示应用层, L4表示传输层

       依赖模块:

              ngx_http_proxy_module          

     # proxy代理模块,用于把请求抛给服务器节点或upstream服务池

    ngx_http_upstream_module

           # 负载均衡模块,可以实现网站的负载均衡功能和节点的健康检查

Nginx反向代理配置:

       # 中小企业大量使用

  1. 反向代理环境安装

    和Nginx环境安装一样 linux_nginx环境安装

  2. 更改配置文件

    其配置文件位置: /application/nginx/conf/nginx.conf

# 其配置添加在 http 模块中

upstream www_server_pools {                       
# 反向代理upstream声明,后面是名字,用在location中表示跳转到反向代理服务器
  server 10.0.0.8:80 weight=1;
  server 10.0.0.9:80 weight=1;                 
# weiht表示权重,越大获得的请求越多,这个ip地址是web服务的地址
# weight一样,雨露均沾,也就是说可以从这里,指向更改了端口号的web服务器
# 雨露均沾就会有个问题,客户登录认证时候,在不同的web服务中跳转,重复认证问题,可以添加 ip_hash; 这个解决一个用户连接,只能固定使用同一个web服务器提供服务
}

# 主配置文件中server绑定域名
server {
        listen       80;
        server_name  www.yunhello.cn;                           # 代理服务器绑定域名
        location / {
               proxy_pass http://www_server_pools;              # 跳转到反向代理
     proxy_set_header Host $host;                        # 传递请求头
     proxy_set_header X-Forwarded-For $remote_addr;        # 传递客户端源地址
           }
}

# 这样的话,用户通过域名访问web服务,首先是到负载均衡服务,然后负载均衡代替用户向web服务请求,对用户来说,和直接访问web服务没有区别

# 可是这样的访问,无法获取用户的请求头信息和来源ip信息
# 在location中添加下面这两行
# proxy_set_header Host $host;                                  # 传递用户的请求头

# proxy_set_header X-Forwarded-For $remote_addr;                # 传递用户访问ip地址

# 在web服务中,需要激活access_log 默认格式配置 $http_x_forwarded_for字段显示用户源ip,然后再每个站点的server中指定各个站点单独的access.log 中应用主配置文件中main格式

如何实现Nginx服务的高可用?

       主Nginx负载均衡器宕机了,备负载均衡顶替上去

    1. 安装keepalived模块

yum install keepalived -y 

    2. 配置文件为 /etc/keepalived/keepalived.conf

# keeplived不仅仅是ip的管理,还有资源的管理,ivs管理,需要把除了ip管理其他的都干掉,其他功能并不需要,更改为以下内容,多余全部删掉

! Configuration File for keepalived

global_defs {
   notification_email {
   qq@qq.com                                    # 个人邮箱,一般不用,使用监控软件实现监控
   }
   notification_email_from qq@qq.com            # 邮箱
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL                          # 备需要更改一下,不能一样
}

vrrp_instance VI_1 {
    state MASTER                                # 主,备需要改为 BACKUP
    interface eth0                              # 通信网卡,默认绑定辅助ip的网卡
    virtual_router_id 51                        # 实例id,用这个来区分主主备是不是一个实例
    priority 150                                # 优先级,数字越大优先级越高
    advert_int 1                                # 心跳间隔
    authentication {
        auth_type PASS                          # 两台负载均衡之间通信密码
        auth_pass 1111
    }  

    virtual_ipaddress {

    10.0.0.3                                    # 辅助ip地址一样,当主挂了,备就使用这个辅助ip

    }  

}

# 然后用户请求,将会直接到达这个辅助ip,然后通过这个辅助ip访问代理,实现web访问                            

  

以上是关于linux_nginx反向代理的主要内容,如果未能解决你的问题,请参考以下文章

Linux_Nginx 安装

linux_nginx环境配置

Varnish介绍

来自代码的反向代理和 HTTP 请求

nginx--❤️图解及代码实现正向代理反向代理及负载均衡(非常实用,建议收藏❤️)

1 行 Go 代码实现反向代理