Skip to content

反向代理

反向代理简介

反向代理(reverse proxy)用于代理服务器,用户输入代理服务器地址,通过nginx请求正确的服务器地址,并将资源返回给用户

配置

使用指令proxy_pass指定反向代理的服务器地址,在/etc/nginx/conf.d/目录下添加配置文件test.conf

{
    listen 80;
    server_name localhost;

    location /jk/ {
        proxy_pass http://localhost:8080/jenkins/;
    }
}

URL符合localhost/jenkins/时,nginx将会请求代理地址

注意:上面的代理服务器地址指定了资源地址为/jenkins/,则该字段将替代location匹配的参数/jk。比如客户端请求地址为http://localhost/jk/page.htmlnginx代理后的地址为http://localhost:8080/jenkins/page.html

所以上面代码也可以修改如下:

...
    location /jenkins/ {
        proxy_pass http://localhost:8080;
    }
...

反向代理过程

nginx安装在本地,所以当URL输入localhost/jenkins/

  1. 解析域名为IP地址127.0.0.1,请求本地nginx进行处理
  2. nginxURL转换成http://localhost:8080/jenkins/后再次请求
  3. nginx获得html数据后转发给浏览器

下面实现输入www.123.com/jenkins/,反向代理到http://localhost/jenkins/

修改/etc/hosts文件,将域名www.123.com映射到nginx服务器地址127.0.0.1

127.0.0.1   www.123.com

添加nginx配置文件/etc/nginx/conf.d/test.conf

server {
    listen       80;
    server_name  www.123.com;

    location /jenkins/ {
        proxy_pass  http://localhost:8080/jenkins/;
    }
}

热更新nginx

$ sudo nginx -s reload

在浏览器登录www.123.com/jenkins/,即可登录本地安装的jenkins

如果不成功,可能是由于DNS缓存的关系,需要清空浏览器缓存和系统缓存

相关阅读