配置Graylog Nginx反向代理与Let’s Encrypt SSL

时间:2020-02-23 14:30:17  来源:igfitidea点击:

欢迎通过Letsencrypt SSL配置Graylog Nginx反向代理的教程。
与Graylog相关的最后一个教程是如何在CentOS 7上安装Graylog 3.
它涵盖了Graylog的所有设置步骤。
唯一的缺点是我们必须使用IP地址和端口号访问Graylog UI,而无需验证SSL证书。

在本教程中,我希望我们查看如何使用LetSencrypt SSL配置Graylog Nginx反向代理。
这样,我们可以使用域或者主机名与已验证的SSL证书一起使用。

使用LetSencrypt SSL配置Graylog Nginx反向代理

第一步是安装Letsencrypt客户端,如Certbot,我们将用于请求Tryllog使用的证书。

安装CERTBOT-AUTO

运行以下命令以安装Cerbot工具。

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
sudo mv certbot-auto /usr/local/bin/

通过检查版本确认安装:

$certbot-auto --version

在防火墙上打开HTTPS端口:

我们将使用HTTP端口请求SSL证书,因此将其打开在防火墙上。
如果使用UFW或者iptables,请使用等效命令替换该命令。

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

请求SSL证书

请求使用CESTBOT-AUTO命令的LetSencrypt证书。

export DOMAIN='graylog.mydomain.com'
export EMAIL="Hyman@theitroad"
sudo certbot-auto certonly --standalone -d $DOMAIN --preferred-challenges http \
 --agree-tos -n -m $EMAIL --keep-until-expiring

这可能需要一段时间,因为它将从引导依赖项开始,创建Python虚拟环境并将Python软件包安装到它,最后是证书生成。
等到命令给出了一个成功生成证书的回复。

成功消息如下所示:

.....
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/domain.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/domain.com/privkey.pem Your cert will expire on 2016-06-07. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG/Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

安装和配置nginx

现在我们需要安装和配置nginx。

sudo yum -y install nginx  # CentOS
sudo apt-get install nginx # Ubuntu/Debian

我们将在/etc/nginx/conf.d/graylog.conf下将nginx配置放在灰度下。
使用灰度域/子域名替换domain.com。

server {
 listen 443 ssl;
 server_name domain.com www.domain.com;
 location/{
   proxy_set_header Host $http_host;
   proxy_set_header X-Forwarded-Host $host;
   proxy_set_header X-Forwarded-Server $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Graylog-Server-URL https://domain.com/api;
   proxy_pass http://127.0.0.1:9000;
   # proxy_pass http://ip-address:9000;
 }
 ssl on;
 ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
 ssl_session_timeout 5m;
 ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
 ssl_protocols TLSv1.2;
 ssl_prefer_server_ciphers on;
 access_log /var/log/nginx/graylog.access.log;
 error_log /var/log/nginx/graylog.error.log;
}
# http to https redirection
server {
    listen 80;
    server_name domain.com www.domain.com;
    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^ https://$server_name$request_uri? permanent;
}

如果其语法有效,请保存配置并使用nginx检查。

$sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

启动并启用Nginx服务

继续启动并启用nginx服务。

sudo systemctl start nginx
sudo systemctl enable nginx

访问指定的域应将我们重定向到HTTPS。