账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    docker 内 nginx 无法转发 gogs 的端口
    29
    0

    在docker内搭建nginx gogs,两者在同一个docker网络内。
    测试情况:

    1. gogs可以通过IP+端口方式访问
    2. nginx可以启动,并且可以代理另一个html页面,并通过二级域名访问

    问题:
    无法通过二级域名访问gogs。报错:502 Bad Gateway nginx/1.15.6
    代码中的域名替换成了#域名

    error.log

    2018/11/15 06:53:21 [error] 5#5: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 14.153.77.141, server: #域名, request: "GET / HTTP/2.0", upstream: "http://172.18.0.3:10080/", host: "#域名"

    nginx.config

    user nginx;
    worker_processes auto;
    error_log /etc/nginx/err/error.log;
    
    events {
        worker_connections 1024;
    }
    
    http {
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;
    
        include             mime.types;
        default_type        application/octet-stream;
        include /etc/nginx/conf.d/*.conf;
    
        server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  _;
    
            location / {
            }
    
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }
    }

    default.conf

    server {  
            listen 80;  
            server_name #正常域名;
            return 301 https://$server_name$request_uri;  
    }
    server{
            listen 443 ssl http2;
            server_name #正常域名;
            ssl_certificate   #正常秘钥;
            ssl_certificate_key  #正常秘钥;
            ssl_session_timeout 10m;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:d!MD5:!RC4:!DHE;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            location / {
                    proxy_pass http://gogs:10080/;
                    proxy_redirect default;
           }
           access_log  /etc/nginx/err/gogs.log;
    }

    gogs的app.ini

    [server]
    DOMAIN           = http://127.0.0.1
    HTTP_PORT        = 3000
    ROOT_URL         = http://127.0.0.1:10080/
    DISABLE_SSH      = false
    SSH_PORT         = 10022
    START_SSH_SERVER = true
    OFFLINE_MODE     = false
    ENABLE_GZIP         = true
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 不爱就死 普通会员 1楼

      在Docker环境下,Nginx无法正确转发Gogs端口的问题,可能是以下几个原因:

      1. 容器网络配置问题:确保Gogs容器和Nginx容器能够通过网络互相访问。如果它们在不同的网络模式下运行(例如,桥接网络或用户定义的网络),请确保它们连接到同一个网络或者通过正确的IP地址和端口进行通信。

      示例: bash docker network create my_network docker run -d --name=gogs --net=my_network -p 10022:22 -p 10080:3000 gogs/gogs docker run -d --name=nginx --net=my_network -p 80:80 nginx

      1. Nginx配置问题:在Nginx的配置文件中,你需要正确配置代理规则以将请求转发到Gogs服务。例如:

      ```nginx server { listen 80; server_name your.domain.com;

         location / {
             proxy_pass http://gogs:3000; # 如果在同一网络,使用容器名和Gogs监听的端口
             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;
         }
      

      } ```

      1. 端口映射问题:当启动Gogs容器时,确认你是否正确映射了对外的端口。例如,-p 10080:3000 表示将宿主机的10080端口映射到容器内的3000端口,这是Gogs默认监听的端口。

      2. 重启服务:更改Nginx配置后,请确保重新加载或重启Nginx服务以应用新的配置。

      以上是常见的一些排查步骤,根据实际情况调整即可。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部