全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 1313|回复: 13
打印 上一主题 下一主题

nginx问题请教下,如何端口转发到虚拟目录

[复制链接]
跳转到指定楼层
1#
发表于 2024-6-12 15:37:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
就是把端口转发成虚拟目录来访问

比如说内网用 transmission 来BT下载,需要IP+端口来使用, http://192.168.31.x:9091 但一堆端口不好记,怎样可以转发成 http://192.168.31.x/bt/ 这样虚拟目录来访问?
当然还有调试各种源码程序,也不想记一堆端口,用公网 IP + 虚拟目录,代替端口实现

网上没找到专门讲这样,找了类似来抄,发现不对,请问哪里出错,应该怎么改?

  1. location ^~ /bt/ {
  2.         client_max_body_size 1024m;
  3.         proxy_http_version 1.1;
  4.         proxy_set_header Upgrade         $http_upgrade;
  5.         proxy_set_header Connection      "Upgrade";
  6.         proxy_set_header Host            $http_host;
  7.         proxy_set_header X-Real-IP       $remote_addr;
  8.         proxy_set_header X-Forward-For   $proxy_add_x_forwarded_for;
  9.         proxy_set_header X-Forward-Proto $scheme;
  10.         proxy_redirect off;
  11.         proxy_pass http://127.0.0.1:9091;
  12. }
复制代码


location ^~/ttyd {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:7681;
    # the max size of file to upload
    client_max_body_size 20000m;
}
推荐
发表于 2024-6-12 16:53:09 | 只看该作者
介个叫反代
加个
  1. rewrite ^/bt/(.*)$ /$1 break;
复制代码

重写路径
  1. location ^~ /bt/ {
  2.         client_max_body_size 1024m;
  3.         proxy_http_version 1.1;
  4.         proxy_set_header Upgrade         $http_upgrade;
  5.         proxy_set_header Connection      "Upgrade";
  6.         proxy_set_header Host            $http_host;
  7.         proxy_set_header X-Real-IP       $remote_addr;
  8.         proxy_set_header X-Forward-For   $proxy_add_x_forwarded_for;
  9.         proxy_set_header X-Forward-Proto $scheme;
  10.         proxy_redirect off;
  11.         rewrite ^/bt/(.*)$ /$1 break;
  12.         proxy_pass http://127.0.0.1:9091;
  13. }
复制代码
14#
发表于 2024-6-12 19:33:36 | 只看该作者
比特鼻 发表于 2024-6-12 17:54
谢谢大佬,加上可以了

但有另外一个遇到新问题,这个它自身就反代了自己的api,就是它有自己的虚拟目录  ...

建议用域名,没有路径问题
13#
 楼主| 发表于 2024-6-12 17:54:46 | 只看该作者
luckyc 发表于 2024-6-12 16:53
介个叫反代
加个

谢谢大佬,加上可以了

但有另外一个遇到新问题,这个它自身就反代了自己的api,就是它有自己的虚拟目录 /api
这样怎么要怎么改?
12#
发表于 2024-6-12 17:02:32 | 只看该作者
  1. upstream grafana {
  2.     server localhost:3000;
  3. }

  4. upstream prometheus {
  5.     server localhost:9090;
  6. }

  7. upstream alertmanager {
  8.     server localhost:9093;
  9. }

  10. server
  11.     {
  12.         listen 80;
  13.         listen [::]:80;
  14. ...
  15. ...
  16.     }

  17. server
  18.     {
  19.         #listen 443 ssl http2;
  20.         #listen [::]:443 ssl http2;
  21.         listen 443 ssl;
  22.         listen [::]:443 ssl;
  23. ...
  24. ...

  25.         location / {
  26.             proxy_http_version 1.1;
  27.             proxy_set_header Upgrade $http_upgrade;
  28.             proxy_set_header Connection "Upgrade";
  29.             proxy_redirect off;
  30.             proxy_set_header Host $http_host;
  31.             proxy_set_header X-Real-IP $remote_addr;
  32.             #proxy_set_header X-Real-IP $http_x_real_ip;
  33.             #proxy_set_header X-Forwarded-For $remote_addr;
  34.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  35.             proxy_pass http://grafana;
  36.         }

  37.         location /api/live {
  38.             proxy_http_version 1.1;
  39.             proxy_set_header Upgrade $http_upgrade;
  40.             proxy_set_header Connection "Upgrade";
  41.             proxy_set_header Host $http_host;
  42.             proxy_pass http://grafana;
  43.             rewrite ^/(.*)  /$1 break;
  44.         }

  45.         location /prometheus/ {
  46.             proxy_pass http://prometheus/;
  47.             auth_basic "Prometheus";
  48.             auth_basic_user_file /home/wwwroot/....../.htpasswd;
  49.         }

  50.         location /alertmanager/ {
  51.             proxy_pass http://alertmanager/;
  52.             auth_basic "Alertmanager";
  53.             auth_basic_user_file /home/wwwroot/....../.htpasswd;
  54.         }

  55.     }
复制代码


反代404应该还是在配置上出了问题,自己写的反代可以参考
10#
发表于 2024-6-12 16:49:55 | 只看该作者
肯定是可以啊,我在公司就这么干,测试环境开端口要提表麻烦的要命

我自己就申请了个端口偷偷开nginx反代,现在我都成了地下网管时不时给同事开服务了,虽然不合规,但是测试环境怎么方便怎么来了
9#
发表于 2024-6-12 16:47:40 | 只看该作者
比特鼻 发表于 2024-6-12 09:45
我测试下,不需要走域名,反代域名80反而简单,
就是内网用用,

你把域名换成localhost就好了,其他得自己摸索了
8#
 楼主| 发表于 2024-6-12 16:45:20 | 只看该作者
kennyS 发表于 2024-6-12 16:39
要消除/bt 路径,除非bt可以配置这个路由

我测试下,不需要走域名,反代域名80反而简单,
就是内网用用,

当然就算是VPS也挺好用,调试各种源码,用虚拟目录总比一堆端口方便
7#
发表于 2024-6-12 16:39:10 | 只看该作者
要消除/bt 路径,除非bt可以配置这个路由
location ^~ /bt/ {

        proxy_pass http://127.0.0.1:9091/;
}
还有静态资源路径要不要替换,具体问题具体分析,html是相对引用就需要了
sub_filter '"assets/' '"bt/assets/';
或者用subs_filter

还有,自己测试下,这个应该不复杂
proxy_redirect default;
    proxy_redirect / /bt/;
    proxy_redirect  http://127.0.0.1:9091/ https://domain.com/bt/;
6#
 楼主| 发表于 2024-6-12 16:25:29 | 只看该作者

纯纯答非所问,这个本来就是搜索引擎排前列的一个网页内容。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-11-6 01:43 , Processed in 0.076811 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表