Вам необходимо: 1) привязать сервис rocketchat только к интерфейсу localhost и 2) позволить nginx прослушивать общедоступный интерфейс и действовать как прокси (что вы, вероятно, уже сделали).
Итак, сначала откройте rocketchat.service
файл (возможно, в /lib/systemd/system/rocketchat.service
, но это зависит от того, как вы настроили службу rocketchat) и в разделе [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 и rocketchat и перезагрузить конфигурацию, введя команду
$ sudo systemctl daemon-reload
.
Длямне это работает без нареканий.