运行在非 443 端口:禁用重定向到无端口 URL

我已经更改了 app.yml

expose:
  - "20632:80"   # http
  #- "443:443" # https
  - "20633:443"

并希望通过 https://mydomain.com:20633 打开 discourse,但它会尝试重定向到无法工作的 https://mydomain.com

当使用

expose:
  - "20632:20632"   # http
  #- "443:443" # https
  - "20633:20633"

netstat -tulpn 显示它正在监听这些端口,但在尝试访问时,会出现超时。

我发现运行在子文件夹 meta . discourse . org/t/serve-discourse-from-a-subfolder-path-prefix-instead-of-a-subdomain/30507,但这不适用。

我还发现了 meta . discourse . org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297
这方向是对的,但并非完全是我需要的。

PS 抱歉移除了论坛链接,但否则我无法发帖。

1 个赞

我们不支持在非标准端口上运行。如果 80/443 端口已被占用,您需要使用一个未被占用的独立服务器,或者运行一个反向代理来连接您的其他服务和 Discourse。

3 个赞

有时“我们不支持”意味着“这超出了您在这里可以期望的帮助范围”,但这次它意味着“您尝试这样做是在浪费时间”。

1 个赞

端口并非以通常的方式被“占用”。Discourse 可以占用该系统上的 80 和 443 端口,它已经在自己的独立服务器上运行。
我卡在了禁用重定向/删除 URL 中端口号的步骤,之后一切都会按预期工作。

1 个赞

您无法阻止该重定向。

如果您无法在标准端口上发布,那么根本行不通。您的选择是使用可用 :80/443 的服务器,或者选择一个替代的讨论平台。

1 个赞

您能帮我配置 nginx 反向代理吗?

我尝试了各种选项但都没有成功

server {
    listen 20633 ssl;
    server_name mydomain.com;
	
	ssl_certificate /etc/letsencrypt/live/mensa.myftp.org/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/mensa.myftp.org/privkey.pem;

    location / {
        # 使用正则表达式从 proxy_pass URL 中移除端口
        # 正则表达式捕获的部分($1)将在 proxy_pass URL 中被替换
        # 实际的后端服务器 IP 和端口在 proxy_pass 指令中单独指定
        proxy_pass http://192.168.178.31:80/;
		#$request_uri;
		proxy_redirect http://192.168.178.31:80/ $scheme://$host:20633/;
		#return 301 $scheme://$host:$server_port/home;
		#proxy_redirect http://192.168.178.31:20633 $scheme://$host:80;
        
        # 将客户端发送的 Host 头保留到后端服务器
        #proxy_set_header Host $host;
		proxy_set_header Host $http_host;

    }
}
1 个赞

请参阅指南 在运行 Discourse 的同一台机器上运行其他网站

2 个赞

该教程适用于通过 Unix 套接字在同一服务器上运行。是否有适用于在不同系统上使用不同端口运行反向代理的配置?我认为应该有,因为这种情况可能更常见。在另一台主机上,我已经有一个证书。
为了说清楚:此设置仅用于测试。在生产环境中,它将在端口 443 上运行,但对于开发和测试,家里的虚拟机已完全足够,并且可以节省在此期间租用服务器的成本。