Nginx反向代理

今天学习到Ngnix,了解一下反向代理:主要涉及到客户端和服务端,而代理就是出于两者之间的一个中介机构

当(客户端<——>代理——>服务端)客户端让中介代理自己去访问服务端属于正向代理(客户有需求,让代理去帮忙实现);

当(客户端<——代理<——>服务端)服务端让中介代理自己去访问客户端属于反向代理(服务产品出来了,找客户)

既:反向代理是中介代理服务端处理与客户端的交互。

一 、windows下实现

1、下载Nginx安装包http://nginx.org/en/download.html

2、解压到一个路径,不要有中文

3、在cmd中启动nginx

4、在浏览器访问127.0.0.1,出现以下画面说明启动成功

5、配置文件conf/nginx.conf

server {
        listen       80;#nginx监听端口
        server_name  maibao.cms.com;#客户端访问的域名

        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host:$server_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host; #这里是重点,这样配置才不会丢失端口

        location / {
            proxy_pass http://127.0.0.1:8080/;#代理映射到的实际域名端口
            proxy_read_timeout 600;#代理访问超时时间
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

6、配置本家hosts文件

最后加上ip映射:127.0.0.1       maibao.cms.com

7、然后重启nginx:nginx -s reload

然后用tomcat发布一个服务:127.0.0.1:8080

浏览器输入maibao.cms.com,会访问到tomcat发布的服务

8、实现对外一个服务地址、实现外部访问根据路径名称不一样,访问不同服务配置

upstream server3 {
        ip_hash;
       server 127.0.0.1:8083;
    }
    upstream server4 {
        ip_hash;
       server 127.0.0.1:8084;
    }
    upstream server5 {
        ip_hash;
       server 127.0.0.1:8085;
    }
    server {
        listen       80;#nginx监听端口
        server_name  localhost;#客户端访问的域名

        #实现端口后面如果跟/web4/,则此处拦截访问,并执行里面的内容
        location ^~ /web4/ {
            proxy_pass http://server4/web4/;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 10m; 
            client_body_buffer_size 128k; 
            proxy_connect_timeout 90; 
            proxy_send_timeout 90; 
            proxy_read_timeout 90; 
            proxy_buffer_size 4k; 
            proxy_buffers 4 32k; 
            proxy_busy_buffers_size 64k; 
            proxy_temp_file_write_size 64k;
        }
        #实现端口后面如果跟/web3/,则此处拦截访问,并执行里面的内容
        location ^~ /web3/ {
            proxy_pass http://server3/web3/;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 10m; 
            client_body_buffer_size 128k; 
            proxy_connect_timeout 90; 
            proxy_send_timeout 90; 
            proxy_read_timeout 90; 
            proxy_buffer_size 4k; 
            proxy_buffers 4 32k; 
            proxy_busy_buffers_size 64k; 
            proxy_temp_file_write_size 64k;
        }
        #实现端口后面如果跟/web5/,则此处拦截访问,并执行里面的内容
        location ^~ /web5/ {
            proxy_pass http://server5/web5/;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 10m; 
            client_body_buffer_size 128k; 
            proxy_connect_timeout 90; 
            proxy_send_timeout 90; 
            proxy_read_timeout 90; 
            proxy_buffer_size 4k; 
            proxy_buffers 4 32k; 
            proxy_busy_buffers_size 64k; 
            proxy_temp_file_write_size 64k;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

访问结果

二、linux下安装nginx

很全:https://yq.aliyun.com/articles/655855

1、vi conf/nginx.conf  进入sbin目录下,对conf配置进行编辑

2、vi /etc/hosts  对hosts文件进行编辑

3、nginx -s reload 重新加载配置文件

4、浏览器访问域名maibao.cms.com

总结:当浏览器访问域名:maibao.cms.com,通过hosts文件进行ip映射到127.0.0.1,因为默认是80端口,所以访问的实际是127.0.0.1:80;因为nginx监听的是80端口,所以就会映射到http://127.0.0.1:8080/

注,如果报错OpenEvent("Global\ngx_reload_10120") failed (2: The system cannot find the file specified)

        说明pid为10120的nginx没启动

       报错为*29 CreateFile() "E:\ngnix\nginx-1.12.2/html/web7" failed (2: The system cannot find the file specified), client:                         127.0.0.1, server: localhost, request: "GET /web7 HTTP/1.1", host: "127.0.0.1"

       是找不到web7的路径服务

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值