Nginx实现端⼝转发
什么是端⼝转发
当我们在服务器上搭建⼀个图书以及⼀个电影的应⽤,其中图书应⽤启动了 8001 端⼝,电影应⽤启动了 8002 端⼝。此时如果我们可以通过
localhost:8001//图书
localhost:8002//电影
但我们⼀般访问应⽤的时候都是希望不加端⼝就访问域名,也即两个应⽤都通过 80 端⼝访问。但我们知道服务器上的⼀个端⼝只能被⼀个程序使⽤,这时候如何该怎么办呢?⼀个常⽤的⽅法是⽤ Nginx 进⾏端⼝转发。Nginx 的实现原理是:⽤ Nginx 监听 80 端⼝,当有 HTTP 请求到来时,将 HTTP 请求的 HOST 等信息与其配置⽂件进⾏匹配并转发给对应的应⽤。例如当⽤户访问 book.douban 时,Nginx 从配置⽂件中知道这个是图书应⽤的 HTTP 请求,于是将此请求转发给 8001 端⼝的应⽤处理。当⽤户访问 movie.douban 时,Nginx 从配置⽂件中知道这个是电影应⽤的 HTTP 请求,于是将此请求转发给 8002 端⼝的应⽤处理。⼀个简单的 Nginx 配置⽂件(部分)如下⾯所⽰:
#配置负载均衡池
nginx 配置文件
#Demo1负载均衡池
upstream book_pool{
server 127.0.0.1:8001;
}
#Demo2负载均衡池
upstream movie_pool{
server 127.0.0.1:8002;
}
#Demo1端⼝转发
server {
listen      80;
server_name  book.chanshuyi;
access_log logs/book.log;
error_log ;
#将所有请求转发给demo_pool池的应⽤处理
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass book_pool;
}
}
#Demo2端⼝转发
server {
listen      80;
server_name  movie.chanshuyi;
access_log logs/movie.log;
error_log ;
#将所有请求转发给demo_pool池的应⽤处理
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass movie_pool;
}
}
上⾯这段配置实现了:
上⾯的这种技术实现就是端⼝转发。端⼝转发指的是由软件统⼀监听某个域名上的某个端⼝(⼀般是80端⼝),当访问服务器的域名和端⼝符合要求时,就按照配置转发给指定的 Tomcat 服务器处理。我们常⽤的 Nginx 也有端⼝转发功能。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。