Nginx 代理服务配置以及反向代理简单配置
2017-07-13
代理服务
一个常见的场景是, 我们的python服务开起了, 但一般不会将python服务对外直接服务, 而是会通过Nginx 将请求转发到python的服务端口,
这里的Nginx就是作为代理服务使用的,
那么Nginx的代理服务如何配置呢,
–下面以上一篇的静态文件服务( https://www.u3v3.com/ar/1375 )作为后端服务, 将web请求转发到该服务 –
代理配置
上一篇我我们用8080端口作为web服务端口, 可以访问静态index.html
和 images 资源
现在, 我们希望通过9090端口, 也能访问同样的资源
当然, 我们不会重新配置8080端口同样的配置来提供服务, 而是通过代理服务, 将9090的请求转发到8080端口,
这样, 我们就能实现目标了
我们需要在nginx.conf
配置添加如下内容
server {
listen 9090;
location / {
proxy_pass http://localhost:8080;
}
}
sudo nginx -s reload
重新加载配置
现在, 所有通过9090
访问的请求都会被转发到8080
端口, 这就实现了代理服务
的需求
以上, 仅仅是实现了一个简单的代理服务, 那么这个代理服务一般做什么用的呢
反向代理
一般来说, Nginx作为一个性能强劲的web服务器, 我们用来做代理服务, 可以将web请求转发到多个后端服务, 这样就可以达到分担服务压力的目的,
比如, 如果我们的web服务需要承担100QPS的请求, 而我们有4台web服务器, 那么我们就可以通过代理服务将100QPS平均分担到4台web服务, 这样, 每台web服务就仅需负担25的QPS, 达到了负载均衡的目的
这就是所谓的反向代理的一种
那么这种是如何实现的呢
ngx_http_upstream_module 模块
Ngnix 的ngx_http_upstream_module
可以用来按组定义服务列表, 这些定义好的服务列表组, 可以提供给proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass
使用, 将Nginx的的请求均衡负载到某个组的每台服务器上
在我们这里的代理服务中, 我们可以像下面, 先定义好一组服务列表(假设192.168.1.32
, 192.168.1.33
, 192.168.1.34
都提供了我们上面的8080端口一样的服务)
upstream static_server_list {
server 192.168.1.32:8080;
server 192.168.1.33:8080;
server 192.168.1.34:8080;
}
现在, 我们重新配置本地的9090代理服务, 如下
server {
listen 9090;
location / {
proxy_pass http://static_server_list;
}
}
注意proxy_pass
后面, 写的是upstream
定义的组名
重载配置sudo nginx -s reload
现在我们通过9090
端口, 就能将web请求平均地负载到static_server_list
服务列表中的3台服务器了, 达到了负载均衡的目的, 实现了反向代理的功能 :-)