如何从Docker容器内部将Nginx反向代理proxy_pass转换为ouside本地网络

问题描述

一个标题:使用Docker Nginx容器代理本地网络中另一台计算机上的网站

我真的很想从外部访问我的3D打印机(OctoPrint)。目前可以在我家的http://192.168.1.198上访问它。

我在另一台服务器上安装了docker,并且我家的端口80和443指向该服务器。在该服务器上,我正在使用Traefik将所有域和子域转发到任何需要它的容器。

所以我想,如果我只是创建另一个Nginx容器,该容器只是OctoPrint的代理,该怎么办?猜猜是什么,它并不容易工作。

当前我的docker-compose.yml如下所示:

version: "2"

services:
  web:
    image: Nginx
    restart: always
    networks:
      - traefik_proxy
    volumes:
      - ./default.conf:/etc/Nginx/conf.d/default.conf
    labels:
      - traefik.enable=true
      
      - traefik.http.routers.manuele0.entrypoints=http
      - traefik.http.routers.manuele0.rule=Host(`<my-site>.`) || Host(`www.<my-site>`) || Host(`3d-printer-1.<my-site>`)
      - traefik.http.routers.manuele0.middlewares=to_https

      # Redirect to main domain
      - traefik.http.routers.manuele1.entrypoints=https
      - traefik.http.routers.manuele1.rule=Host(`<my-site>`)
      - traefik.http.routers.manuele1.tls=true
      - traefik.http.routers.manuele1.tls.certresolver=le
      - traefik.http.routers.manuele1.middlewares=redirect_to_manuele
      - traefik.http.middlewares.redirect_to_manuele.redirectregex.regex=^https:\/\/([^\/]*)\/(.*)
      - traefik.http.middlewares.redirect_to_manuele.redirectregex.replacement=https://www.<my-site>/$${2}

      - traefik.http.routers.manuele.entrypoints=https
      - traefik.http.routers.manuele.rule=Host(`www.<my-site>`) || Host(`3d-printer-1.<my-site>`)
      - traefik.http.routers.manuele.tls=true
      - traefik.http.routers.manuele.tls.certresolver=le

networks:
  traefik_proxy:
    external: true

以及Nginx配置:

# <here is another proxy to my GitHub page,which works and is not related to this problem>

server {
    listen 80;
    listen [::]:80;

    server_name 3d-printer-1.<my-site>;

    location / {
        proxy_pass              http://192.168.1.198;
        # proxy_http_version      1.1;
        # proxy_buffering         off;
        proxy_set_header        Host                $http_host;
        # proxy_set_header        Upgrade             $http_upgrade;
        # proxy_set_header        Connection          $proxy_connection;
        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   $proxy_x_forwarded_proto;
        # proxy_set_header        X-Forwarded-Ssl     $proxy_x_forwarded_ssl;
        # proxy_set_header        X-Forwarded-Port    $proxy_x_forwarded_port;

        proxy_intercept_errors  on;
        expires                 off;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/Nginx/html;
    }
}

http://192.168.1.198不起作用,那么我还能如何代理呢?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)