宇宙主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

欧基零壹微头条IP归属甄别会员请立即修改密码
查看: 826|回复: 13

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

[复制链接]
发表于 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. }
复制代码
发表于 2024-6-12 15:58:47 | 显示全部楼层
本帖最后由 xiaxiapi 于 2024-6-12 16:02 编辑

:7681是server节点上端口。想什么。

如果你80端口或者443的端口是开放的,你抄来的代码是对的。。proxy_pass是你服务端口。等于80端口访问目录代理到proxy_pass的端口
 楼主| 发表于 2024-6-12 16:10:55 | 显示全部楼层
xiaxiapi 发表于 2024-6-12 15:58
:7681是server节点上端口。想什么。

如果你80端口或者443的端口是开放的,你抄来的代码是对的。。proxy_ ...

内网啊,等于你 localhost ,当然80自己用没问题,我没说要外网穿透这些

就是 http://192.168.31.1:xxxx 转发成 http://192.168.31.1/xxxt/  不用记一堆端口,就是这样抄过来实现不了,给我404
发表于 2024-6-12 16:18:43 | 显示全部楼层
  1. nginx问题请教下,如何端口转发到虚拟目录
  2. ChatGPT
  3. 在 Nginx 中,将请求转发到虚拟目录(即子路径)可以通过配置 location 指令和 proxy_pass 指令来实现。假设你有一个后端服务运行在特定端口,并且你希望通过 Nginx 将请求转发到该服务,但在特定的虚拟目录下。以下是一个示例配置:

  4. 假设:

  5. 后端服务运行在 http://localhost:8080
  6. 你希望所有请求通过 http://yourdomain.com/api/ 转发到该后端服务
  7. Nginx 配置如下:

  8. nginx
  9. 复制代码
  10. server {
  11.     listen 80;
  12.     server_name yourdomain.com;

  13.     location /api/ {
  14.         proxy_pass http://localhost:8080/;
  15.         proxy_set_header Host $host;
  16.         proxy_set_header X-Real-IP $remote_addr;
  17.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  18.         proxy_set_header X-Forwarded-Proto $scheme;

  19.         # 如果需要保留 /api/ 前缀,可以注释下面这行
  20.         rewrite ^/api/(.*)$ /$1 break;
  21.     }
  22. }
  23. 解释:

  24. server 块定义了一个虚拟主机,监听 80 端口,并且域名为 yourdomain.com。
  25. location /api/ 块指定了所有以 /api/ 开头的请求。
  26. proxy_pass http://localhost:8080/; 将这些请求转发到后端服务 http://localhost:8080。
  27. proxy_set_header 指令设置了一些必要的头信息,用于保持客户端的请求信息。
  28. rewrite ^/api/(.*)$ /$1 break; 这行用于移除 /api/ 前缀,将 /api/foo 重写为 /foo。如果希望保留 /api/ 前缀,可以注释掉这行。
  29. 将上述配置添加到你的 Nginx 配置文件中(通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default),然后重新加载 Nginx 配置:

  30. sh
  31. 复制代码
  32. sudo nginx -s reload
  33. 这样,当你访问 http://yourdomain.com/api/ 时,请求将被转发到 http://localhost:8080/。根据需要调整具体的路径和端口配置。






复制代码
 楼主| 发表于 2024-6-12 16:25:29 | 显示全部楼层

纯纯答非所问,这个本来就是搜索引擎排前列的一个网页内容。
发表于 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/;
 楼主| 发表于 2024-6-12 16:45:20 | 显示全部楼层
kennyS 发表于 2024-6-12 16:39
要消除/bt 路径,除非bt可以配置这个路由

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

当然就算是VPS也挺好用,调试各种源码,用虚拟目录总比一堆端口方便
发表于 2024-6-12 16:47:40 | 显示全部楼层
比特鼻 发表于 2024-6-12 09:45
我测试下,不需要走域名,反代域名80反而简单,
就是内网用用,

你把域名换成localhost就好了,其他得自己摸索了
发表于 2024-6-12 16:49:55 | 显示全部楼层
肯定是可以啊,我在公司就这么干,测试环境开端口要提表麻烦的要命

我自己就申请了个端口偷偷开nginx反代,现在我都成了地下网管时不时给同事开服务了,虽然不合规,但是测试环境怎么方便怎么来了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|兜哪儿主机交流论坛

GMT+8, 2024-9-20 12:30 , Processed in 0.062216 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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