怎么在Nginx上配置FRP支持任意端口呢?(访问的时候,需要添加端口号)

  • 作者: 凯哥Java(公众号:凯哥Java)
  • 工作小总结
  • 时间:2024-08-01 14:58
  • 527人已阅读
简介 做过微信开发或者是支付的都知道,在本来联调的时候,需要的,FRP凯哥在这里就不介绍了。那么,有时候我们的服务ip不是固定的。可能是任意的。那么这个时候,怎么在Nginx上支持呢?比如下面是凯哥之前配置的。只能支持8082端口server {    listen       80;

🔔🔔🔔好消息!好消息!🔔🔔🔔

有需要的朋友👉:联系凯哥 微信号 kaigejava2022

做过微信开发或者是支付的都知道,在本来联调的时候,需要的,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










TopTop