首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx反向代理与Docker组合传输

Nginx反向代理与Docker组合传输
EN

Server Fault用户
提问于 2019-12-17 01:55:23
回答 2查看 4.4K关注 0票数 0

我试图让Nginx作为传输web客户端的反向代理。这两个都在单独的码头集装箱与码头组成。

我以前读过类似的问题,但这些问题对我没有用:https://unix.stackexchange.com/questions/64812/get-transmission-web-interface-working-with-web-server

https://stackoverflow.com/questions/15391073/nginx-transmission-daemon-url-rewrite

Nginx给了我一个错误:

6#6:*3 "/etc/nginx/html /transmission/web/ index.html“(2:没有此类文件或目录),客户端: 172.18.0.1,服务器: torrent.localhost,请求:"GET /传输/web/ HTTP/1.1",主机:"torrent.localhost”

这让我怀疑proxy_pass没有正常工作,因为它仍然试图从文件系统中获取html文件。

任何帮助都是非常感谢的!

  • 当我去http://localhost时,我得到了hello world!
  • 当我到达http://torrent.localhost时,我会得到一个输入用户名和密码的本地提示。
  • 当我输入用户名和密码时,就会用一个http://torrent.localhost/transmission/web/重定向到404: Not Found
  • 当我进入http://torrent.localhost:9091时,我得到了本机提示,但是它成功地登录并继续传输web客户端。

docker-compose.yml:

代码语言:javascript
复制
version: "2"
services:
  nginx:
    image: nginx
    container_name: nginx-proxy
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./www:/data/www
    ports:
    - "80:80"
    - "443:443"

  transmission:
    image: linuxserver/transmission
    container_name: transmission
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - USER=username
      - PASS=password
    volumes:
      - ./transmission/config:/config
      - ./transmission/downloads:/downloads
      - ./transmission/watch:/watch
    ports:
      - "9091:9091"
      - "51413:51413"
      - "51413:51413/udp"
    restart: unless-stopped

nginx.conf:

代码语言:javascript
复制
events {
}

http {
    server {
        listen 80;
        server_name localhost 127.0.0.1;
        root /data/www;
        location = / {
            index index.html;
        }
    }

    server {
        server_name torrent.localhost;
        location = / {
            proxy_read_timeout 300;
            proxy_pass_header  X-Transmission-Session-Id;
            proxy_set_header   X-Forwarded-Host $host;
            proxy_set_header   X-Forwarded-Server $host;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://transmission:9091;
        }
    }
}

index.html:

代码语言:javascript
复制
hello world!
EN

回答 2

Server Fault用户

回答已采纳

发布于 2019-12-27 18:11:18

你的问题在于“位置”之后的等号。如果位置需要匹配确切的请求URI,则可以使用等号。

您可能希望删除等号("=")如下:

代码语言:javascript
复制
server {
    server_name torrent.localhost;
    location / { # <-- remove "=" sign
        proxy_read_timeout 300;
        proxy_pass_header  X-Transmission-Session-Id;
        proxy_set_header   X-Forwarded-Host $host;
        proxy_set_header   X-Forwarded-Server $host;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://transmission:9091;
    }
}
票数 0
EN

Server Fault用户

发布于 2019-12-31 09:27:28

您可以通过将容器添加到单个网络来实现。您可以在停靠-撰写文件中定义网络。下面的例子,

代码语言:javascript
复制
version: "2"
services:
  nginx:
    image: nginx
    container_name: nginx-proxy
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./www:/data/www
    ports:
    - "80:80"
    - "443:443"
    networks:
      NETWORKNAME:
        ipv4_address: 10.5.2.1

  transmission:
    image: linuxserver/transmission
    container_name: transmission
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - USER=username
      - PASS=password
    volumes:
      - ./transmission/config:/config
      - ./transmission/downloads:/downloads
      - ./transmission/watch:/watch
    ports:
      - "9091:9091"
      - "51413:51413"
      - "51413:51413/udp"
    restart: unless-stopped
    networks:
      NETWORKNAME:
        ipv4_address: 10.5.2.2

networks:
  NETWORKNAME:
    driver: bridge
    ipam:
      config:
        - subnet: 10.5.0.0/16
          gateway: 10.5.0.1

请按您的意愿替换NETWORKNAME。另外,根据您的需求选择子网掩码(您也可以随意选择IP)。然后将您的nginx conf更改如下,

代码语言:javascript
复制
server {
    listen 80;
    server_name "abc.example.com";   #your domain name
 
    location / {

        limit_except GET POST PUT HEAD DELETE OPTIONS PATCH {
             deny   all;
        }

        proxy_pass https://10.5.2.2;     #IP of your web container
        proxy_set_header Host $host:$server_port;
        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_intercept_errors on;
    }
}

下面的项目使用Nginx容器作为反向代理。您可以参考该项目,并找到更有帮助的信息。OrangeHRM文档化开发环境

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/995822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档