首页 > 技术文章 > nginx反向代理

lxl-six 2019-06-17 22:41 原文

1什么是反向代理

  反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

  首先我们先理解正向代理,如下图:

            

 

   正向代理是针对你的客户端,而反向代理是针对服务器的,如下图

            

 

            

 

2准备工作:

    (1) 将网站首页页面部署到tomcat中(ROOT目录),上传到服务器。

        具体操作:

            将需要部署的项目打包为ROOT。并将Linux中tomcat下webapps所以文件删除。(或者直接删除tomcat下root的文件,直接替换为项目所需要的文件)

            然后将ROOT.war文件上传到webapps下。

    (2)启动TOMCAT,输入网址http://192.168.40.131:8080可以看到网站首页

 3配置反向代理

   (1)在Nginx主机修改 Nginx配置文件

 upstream pinyougou-portal{
    server  192.168.40.131:8080;
 }
    
     server {
        listen       80;
        server_name  www.pinyougou.com;
 
        location / {
          proxy_pass http://pinyougou-portal;
            index  search.html;
        }
    }

  完整配置如下:

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;
 

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

    server {
        listen       80;
        server_name  cart.pinyougou.com;
 

        location / {
            root   cart;
            index  cart.html;
        }
    }

     server {
        listen       80;
        server_name  search.pinyougou.com;
 

        location / {
            root   search;
            index  search.html;
        }
    }

    upstream pinyougou-portal{
    server  192.168.40.131:8080;
    }
    
     server {
        listen       80;
        server_name  www.pinyougou.com;
 

        location / {
 
        proxy_pass http://pinyougou-portal;
            index  search.html;
        }
    }
}

 

 第四布测试:

  www.****.com.ok

  需要修改host文件:

  # nginx测试方案

192.168.40.131 cart.pinyougou.com
192.168.40.131 search.pinyougou.com
192.168.40.131 www.pinyougou.com

   解释:

    当浏览器输入访问server_name中的值时去访问nginx然后server_named的值会去解析proxy_pass的值,然后去找server,获取到:192.168.40.131:8080。然后去访问tomcat。然后 返回。。。。哪里说的不对还请大佬指出。

 

推荐阅读