discourse 默认占用80端口和443
我想要通过安装宝塔Nginx(80、443)然后用NGINX来访问 discourse
可是 discourse 在安装的时候就一定要检测80端口是否被占用了
discourse 默认占用80端口和443
我想要通过安装宝塔Nginx(80、443)然后用NGINX来访问 discourse
可是 discourse 在安装的时候就一定要检测80端口是否被占用了
这个需要重构 Docker。
编辑:app.yml 文件。
expose:
“10080:80”
“2222:22”
Discourse 的端口绑定是直接写在 Docker 容器里面的。
如果不改,默认就是 80 和 443
我就是改了这个没用,他会重定向,后面我发现
Discourse 的容器可能仍然认为 HTTPS 应该运行在 443 端口,因此,当请求发送到 8443 时,它会错误地重定向或者拒绝该请求。我们需要确保 Nginx 在容器内能够监听正确的端口。
修改 app.yml
文件中的端口映射配置:
yaml
复制代码
expose:
- "8080:80" # http
- "8443:443" # https
为了使 Discourse 的 Nginx 在容器内监听 8443 端口,请将容器内的 HTTPS 端口从 443 改为 8443:
yaml
复制代码
expose:
- "8080:80" # http
- "8443:8443" # https
这样做的目的是让 Discourse 内部的 Nginx 监听 8443 端口,而不是默认的 443。
要让 Discourse 内置的 Nginx 在 8443 端口上运行 HTTPS,而不是 443 端口,您需要修改 web.ssl.template.yml
中与 Nginx 监听端口相关的部分。根据您目前提供的内容,web.ssl.template.yml
文件中的 listen 443 ssl;
是监听 HTTPS 的默认端口 443 的部分。
web.ssl.template.yml
:我们要把监听的端口从 443
改为 8443
,具体修改以下几处。
listen 443 ssl
部分找到文件中所有的 listen 443 ssl;
和 listen [::]:443 ssl;
,并将它们改为 listen 8443 ssl;
和 listen [::]:8443 ssl;
。
具体改法如下:
yaml
复制代码
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /listen 80;\s+gzip on;/m
to: |
listen 443 ssl;
http2 on;
SSL_TEMPLATE_SSL_BLOCK
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /listen 80;\s+listen \[::\]:80;\s+gzip on;/m
to: |
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
SSL_TEMPLATE_SSL_BLOCK
yaml
复制代码
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /listen 80;\s+gzip on;/m
to: |
listen 8443 ssl;
http2 on;
SSL_TEMPLATE_SSL_BLOCK
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /listen 80;\s+listen \[::\]:80;\s+gzip on;/m
to: |
listen 8443 ssl;
listen [::]:8443 ssl;
http2 on;
SSL_TEMPLATE_SSL_BLOCK
另外一处需要注意的是在 ssl_certificate
和 ssl_certificate_key
的路径和 rewrite
规则部分,我们不需要做额外修改,除非证书路径有变化。
修改完成后,重建容器并启动。
内部外部的端口必须一致,否则证书下发给443,外部是其他端口的话就没法用。
Discourse 改端口是比较麻烦。
主要是容器配置哪里。
开始我们也想改来着,后来感觉就是付出的工作量和麻烦还不如不改。
有网友问过想在同一台机器上部署多个 Discourse 实例,后来我们的想法就是懒得麻烦,跑一个就好了。
是的,但是如果服务器配置较大,例如VDS 128c256g,全给discourse 吃80、443 就太亏了
直接改Nginx里面的
啊?discourse 内部 NGINX?
详细说说?
刚刚尝试的方法多了 一直在重建,储存暴增
./launcher cleanup
似乎没用
nginx 应该改不了。
我们试过很多,都需要重构,最后就放弃了。
想着有时间去折腾还不如保持稳定吧,就单独给个机器算了。
可以参考一下我自己的踩坑历史,我现在就是在8888端口部署的:
想问一下是怎么做到不使用内部的 nginx
使用外部的 nginx。
@CAKE_NICE
注释下面两个引用文件:
"templates/web.socketed.template.yml"
"templates/web.ssl.template.yml"
然后更改端口:
expose:
- "8888:80" # http
# - "443:443" # https
端口只需要暴露一个就行了。
expose:
你的方法也是类似 @luobo 的吗?
所以是要先正常部署一遍80、443然后修改好配置文件再重构吗?
因为 setup 默认都是要检测80端口呀
不需要,直接复制修改 app.yml
文件到 containers/
目录下,然后项目根目录执行 ./launcher rebuild app
即可
就是说不用输入 setup 直接重建
是的,直接 rebuild 就可以,只要设置好邮箱和容器外部的反代就行了