Nginx实现单个或多个项目的反向代理

2024-02-03 10:49:06 浏览数 (2)

Nginx在实际项目开发的应用场景中非常多,主要是用来实现反向代理的功能。反向代理就是指用户访问某个ip端口备通过域名或者二级地址,无感转发到另一个全新的端口,展示那个端口上部署的项目。本文将介绍如何配置Nginx服务器实现反向代理。

一、安装Nginx

参考我之前写过的文章:Windows安装Nginx

二、Nginx反向代理逻辑示意图

image 1 - Nginx实现单个或多个项目的反向代理image 1 - Nginx实现单个或多个项目的反向代理

三、配置Nginx,实现单个项目反向代理

我们这里要配置Nginxconfnginx.conf文件。

找到sever的参数。

listen:监听的端口;

(监听端口需要避免占用,尤其是win-server,需要关闭IIS在80端口的默认项目)

server_name:监听的域名(填写localhost即为公网IP);

location里proxy_pass:设置转发的目标地址;

代码语言:javascript复制
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
       http://124.xxx.xx.21:8080/pages/index.html;  # 设置转发的目标地址
    }

    #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;
    }
}

这里给出的例子的意思是:当收到公网IP的访问时,转发请求到http://124.xxx.xx.21:8080/pages/index.html。

四、配置Nginx,实现多个项目反向代理

下面是带有多个server的写法:

代码语言:javascript复制
	upstream lanxin{
		server localhost:8080;
	}
	
	upstream damon{
		server localhost:8081;
	}
	
    server {
        listen       80;
        server_name  lanxinyun.com;

        location / {
			proxy_pass http://lanxin;
        }

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

    server {
        listen       80;
        server_name  damon-liu.work;

        location / {
			proxy_pass http://damon;
        }

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

80端口监听,当访问域名为lanxinyun.com时跳转到8080端口发布的项目,damon-liu.work域名访问则跳转到8081端口发布的项目。

五、结束语

通过反向代理,我们实现了同一端口的复用(通过Nginx配置不同的域名监听,跳转到不同的项目),这在项目中非常常见,是当代程序员必备技能点。

0 人点赞