我在rocket.chat
上安装了0.72.3
版本CentOS 7.6
作为本地团队的私人聊天。
然后用于配置反向代理以强制rocket.chat
使用SSL协议,我安装了nginx
版本1.12.2
,并按照此链接https://rocket.chat/docs/developer-guides/mobile-apps/supporting-ssl/
将nginx
配置为反向代理。
配置成功后,我有两个url
都指向我的rocket.chat
应用程序(http://localhost:3000
和https://localhost:443
)。我的意思是rocket.chat
在这两个链接下都是可访问的,而http
访问是多余的。
如何禁用通过rocket.chat
对http://localhost:3000
的访问?
答案 0 :(得分:1)
您需要1)仅将火箭聊天服务绑定到localhost接口,并且2)让nginx监听公共接口并充当代理(您可能已经做过)。
因此,首先打开rocketchat.service
文件(可能在/lib/systemd/system/rocketchat.service
中,但这取决于您如何配置火箭聊天服务),然后在[Service]
部分中添加以下行:
[Service]
Environment=BIND_IP=127.0.0.1
请放心,您已经有一个(或一些)Environment
条目,这些条目是聚合的(就我而言,每个变量只有一个Environement
条目)。
然后打开您的nginx配置(可能为/etc/nginx/sites-enabled/default
,但这可能有所不同),并确保server
块仅在端口443上侦听并执行其代理工作。我的Nginx相关条目如下所示:
# Upstreams
upstream backend {
server 127.0.0.1:3000;
}
server {
listen 443;
server_name mydomain.com;
error_log /var/log/nginx/rocketchat.access.log;
ssl on;
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://127.0.0.1:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}
您可能需要重新加载/重新启动Nginx和火箭聊天服务并重新加载配置发布
$ sudo systemctl daemon-reload
命令。
对我来说,它完美无缺。
答案 1 :(得分:0)
我通过阻止与localhost
的外部连接并允许使用localhost
与iptables
的内部连接解决了此问题:
iptables -A INPUT -p tcp --dport 3000 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 3000 -j DROP
但是我仍然想知道是否没有与nginx
相关的配置来解决问题?