请教一个关于Nginx的配置 (已放弃)

还是老老实实写正常的location吧,不搞奇淫巧计了 :joy:


我想将 frp登录面板 127.0.0.1:7001 映射成 127.0.0.1/frp/7001这种格式,当然映射的端口不限于7001(包含frp配置中开放的端口7000:7100),当前的配置如下:

location ~ ^/frp/(?<port>\d+)(?<path>/.*) {
        set $target_port $port;
        set $target_path $path;

        proxy_pass http://172.17.0.1:$target_port$target_path$request_uri;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
    }

访问 127.0.0.1:7001 后跳转登录面板 127.0.0.1:7001/static/#/;使用上述配置后127.0.0.1/frp/7001 显示的时404如果手动加上/static/#/ url会变成127.0.0.1/static/frp/7001/static/#/页面显示的任然是404,请问该怎么写这个nginx的规则:sob:

我不会
看看gpt4的回答

1 个赞

问过了,但是任然没能解决 :rofl:

这样的用法有点奇怪呢,为什么要把端口拼接到 url 里呢?

怎么说呢,

  • 服务器不想开放这么多端口,这样配置,我只需要开 80、443、22端口就行了
  • 方便管理,比如/frp/7001这个我就知道这是frp的,免得时间长了忘记这个是干啥的了,还得去看配置 :joy:

那你不是还得记住7001这个端口吗?你为啥不直接写127.0.0.1/frp 来的简单呢?

为啥要用通配符?直接 location 映射到对应端口不行吗?

主要是感觉如果我映射了几十个端口 ,写几十个location 感觉也太多了,都是带端口访问 :rofl:

你试试后面多加/,加/不加是不一样的

https://mp.weixin.qq.com/s?__biz=MzkxOTQyNjE5Nw==&mid=2247484035&idx=1&sn=b3621872e6bbdd1446bbc264961915a6&chksm=c1a30779f6d48e6f87d2f8674551dea05057d95046d44cc15d94c3ff3fca59d1af000a95065b&scene=132#wechat_redirect

你看看这个