Nginx怎么针对指定路径和端口做反向代理?
比如Web Socket请求路径是/ws
或wss
,又或者是一个端口号8080
,需要转发到另外的进程上,怎么通过Nginx来做反向代理呢?
可以使用Nginx的proxy_pass
指令来实现反向代理,并使用location
指令来限制代理的端口和路径。
以下是一个示例配置:
server {
listen 80;
listen 8080;
# Only proxy requests on port 8080
location / {
if ($server_port = 8080) {
proxy_pass http://localhost:8081;
}
}
}
该配置会同时监听80和8080端口,并且只会在8080端口上代理请求。如果请求的路径匹配了location
指令中的"/"路径,则会使用proxy_pass
指令将请求转发到本地的8081端口上。
如果有其他的路径需要代理可以添加多个location,例如:
location /api {
if ($server_port = 8080) {
proxy_pass http://localhost:8081;
}
}
location /admin {
if ($server_port = 8080) {
proxy_pass http://localhost:8081;
}
}
这样就可以只代理特定路径下的请求。