nginx反向代理实战

反向代理(reverse proxy)是一个web服务器,它终结了客户端连接,并且生成了另外一个连接,新的连接代表客户端向上游服务器生成连接。核心就是一个proxy_pass

 例如

location /uri {

 proxy __pass http://xx.xxx.xxxx.:80

#proxy_pass后面的地址是上游服务器地址

}


说起来很复杂,下面进入实战

首先说下基本情况 我有2台nginx服务器,第一台(192.168.8.188)(为了方便以后简称s0)用来直接接收客户端请求 第二台(192.168.8.189)存储图片等信息。

上配置文件 这是188的配置文件

  server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.php index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                    fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
        }
        location ~ ^/images{
                proxy_pass http://192.168.8.189:80;
        }
        #上面这个代码意思就是把有关images的请求 全部转发给189的80端口

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

这是189的配置文件

 server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.php index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

首先在s0的nginx配置好代理,然后在网站根目录新建一个静态页 包括2张图片,我这是查看命令,你应该是编辑生成。

QQ图片20160702100001.png

然后在s1的服务器的html目录里面新建images目录并存放入2张图片,注意权限,此时s0服务器里面是没有图片的,打开浏览器访问s0服务器,发现可以正常打开,这时候我们去看s1服务器的nginx访问日志,证明代理成功。注意灵活掌握,在生产中灵活应用

21.png



nickname
content