怎么在Nginx上配置FRP支持任意端口呢?(访问的时候,需要添加端口号)
- 工作小总结
- 时间:2024-08-01 14:58
- 1229人已阅读
简介
做过微信开发或者是支付的都知道,在本来联调的时候,需要的,FRP凯哥在这里就不介绍了。那么,有时候我们的服务ip不是固定的。可能是任意的。那么这个时候,怎么在Nginx上支持呢?比如下面是凯哥之前配置的。只能支持8082端口server { listen 80;
🔔🔔好消息!好消息!🔔🔔
有需要的朋友👉:微信号
做过微信开发或者是支付的都知道,在本来联调的时候,需要的,FRP凯哥在这里就不介绍了。
那么,有时候我们的服务ip不是固定的。可能是任意的。那么这个时候,怎么在Nginx上支持呢 ?
比如下面是凯哥之前配置的。只能支持8082端口
server {
listen 80;
server_name 这里请修改成自己的;
location ~^/ {
resolver 8.8.8.8;
proxy_pass http://$host:8082;
proxy_redirect off;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 6k;
proxy_buffers 6 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
}
location ~ .*\.(gif|jpg|png|bmp|swf|css|js)$ {
proxy_pass http://$host:8082;
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 1d;
}
}现在我本地不是8082了。是其他的,这个时候怎么办呢?
在你的Nginx配置中,你使用了proxy_pass http://$host:8082;来指定后端服务的地址和端口。如果你希望支持任意端口,而不是固定在8082端口上,你可以通过以下方式来实现:
一种方法是在请求中包含端口号,并在proxy_pass指令中使用变量来动态指定端口。但是Nginx默认不会解析URL中的端口号,所以你需要在proxy_pass之前使用set指令来设置一个变量,该变量值为请求URI中的端口号。
例如,你可以这样修改你的配置:
server {
listen 80;
server_name 这里请修改成自己的;
# 添加set指令来获取请求URI中的端口号
set $backend_port $http_x_original_port;
if ($backend_port = "") {
set $backend_port 8082; # 如果没有传递端口,则使用默认端口8082
}
location ~^/ {
resolver 8.8.8.8;
proxy_pass http://$host:$backend_port;
proxy_redirect off;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 6k;
proxy_buffers 6 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
}
# 保持其他location块不变
...
}这样就可以了.。
需要注意,修改后,重启Nginx
上一篇: 怎么释放磁盘空间?
下一篇: 卡卡保皇礼包码大全及兑换方式一览