Nginx反向代理

两种代理模式

正向代理

架设在客户机与目标主机之间,代理内部网络对Internet进行访问。
客户机必须配置指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中,由代理服务器代替我们去访问。

比如使用VPN访问谷歌,我们需要在电脑上(即客户机)配置FQ软件,或者在ie浏览器上指定代理服务器Ip地址,将发往谷歌的连接请求发往代理服务器,由代理服务器代替我们去访问谷歌再向我们返回响应数据。


反向代理

架设在服务器端,将客户机请求转发给内部网络上的目标服务器(通常会有多台服务器,具体是哪一台这个查找工作由代理服务器来完成),并将从服务器上得到的结果返回给请求连接的客户端。代理服务器还能通过缓存经常被请求的页面来缓解服务器的工作量。

无需在客户机上做任何配置,对外暴露的是代理服务器,由代理服务器访问真实服务器,降低了暴露真实服务器的风险,而客户机以为请求直接发往的是真实服务器。

例如我们访问淘宝,仅仅打开浏览器输入地址即可,这时请求数据包会发往代理服务器,代理服务器再帮助我们去请求最近的目标服务器,最后再将结果返回给我们。

反向代理案例

案例1要求:
我有两台服务器,一台Nginx反向代理服务器10.154.0.111,一台tomcat服务器10.154.0.112,参考资料:tomcat安装
访问http://10.154.0.111:80就会去跳转到http://10.154.0.112:8080页面上去。

编辑nginx.conf配置文件如下

$ vim /usr/local/nginx/conf/nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;



    sendfile        on;

    keepalive_timeout  65;


    server {
        listen       80;
        server_name  localhost;
        default_type text/html;

   location / {
            root html;
            #设置代理跳转到tomcat服务器
            proxy_pass http://10.154.0.112:8080;
            index index.html index.htm;
        }
}

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

#加载配置文件
$ ningix -s reload

使用浏览器访问


注意事项
最好先在服务器上使用curl验证一下,确定访问没有问题。

$ curl http://10.154.0.111
$ curl http://10.154.0.112:8080

如果配置正确,但是还是访问不了,可能是之前浏览器有缓存,可以使用ctrl+f5刷新。我建议是使用无痕浏览模式访问。


案例2要求:
访问代理服务器的不同路径跳转到真实服务器的不同端口上去
访问代理服务器http://10.154.0.111:9001/edu/ 跳转到真实服务器10.154.0.112:8080
访问代理服务器http://10.154.0.111:9001/vod/ 跳转到真实服务器10.154.0.112:8081

配置tomcat服务器
tomcat服务器ip为10.154.0.112
上一个案例已经配置了8080端口的tomcat服务器,我们拷贝tomcat目录,重新编辑配置文件更改端口

$ cp -r tomcat9_8080 tomcat9_8081

#编辑tomcat9_8081的配置文件,使其端口改为8081
$ vim /usr/local/tomcat9_8081/conf/server.xml

注意需要修改两处地方,一处为SHUTDOWN,要与8080的服务器的SHUTDOWN端口不一致即可

这一处修改服务器的访问端口

创建edu跟vod目录以及index.html文件

#在tomcat8080服务器上创建edu目录跟index.html文件
$ cd /usr/local/tomcat9_8080/webapps/
$ mkdir edu
$ echo 'This is 8080 server!' > index.html
#重启tomcat服务
$ cd /usr/local/tomcat9_8080/bin
$ ./shutdown.sh 
$ ./startup.sh

#在tomcat8081服务器上创建vod目录跟index.html文件
$ cd /usr/local/tomcat9_8081/webapps/
$ mkdir vod
$ echo 'This is 8081 server!' > index.html
#重启tomcat服务
$ cd /usr/local/tomcat9_8081/bin
$ ./shutdown.sh 
$ ./startup.sh

编辑Nginx代理服务器配置文件

$ vim /usr/local/nginx/conf/nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;


    server {
        #配置代理服务器监听端口9001
        listen       9001;
        server_name  localhost;
        default_type text/html;
	#配置访问路径,访问http://代理服务器:9001/edu就会访问到http://真实服务器:8080/edu
	location ~ /edu {
	    root html;
        proxy_pass http://10.154.0.112:8080;
	    index index.html index.htm;
	}

	location ~ /vod {
	    root html;
        proxy_pass http://10.154.0.112:8081;
	    index index.html index.htm;
	}
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

#重新加载配置文件
$ nginx -s reload

使用浏览器访问


学习来自:YSOcean大佬博客,M俊大佬博客,B站教程1,b站教程2

其他参考资料:菜鸟教程

posted @ 2021-01-05 21:01  努力吧阿团  阅读(415)  评论(0)    收藏  举报