Nginx 是前后端开发工程师必须掌握的神器。该神器有很多使用场景,比如反向代理、负载均衡、动静分离、跨域等等。
把 Nginx 下载下来,打开 conf 文件夹的 nginx.conf 文件,Nginx 服务器的基础配置和默认的配置都存放于此。
配置是让程序员非常头疼的事,比如 Java 后端框架 SSM ,大量配置文件让不少人头皮发麻,所以才涌现了 Spring Boot 这样能简化配置的框架。
如果能够采用可视化的方式对 Nginx 进行配置,那该多好。老逛在 GitHub 上发现了一款可以一键生成 Nginx 配置的神器,相当给力。
先来看看它都支持什么功能的配置:反向代理、HTTPS、HTTP/2、IPv6, 缓存、WordPress、CDN、Node.js 支持、 Python (Django) 服务器等等。
如果你想在线进行配置,只需要打开网站:https://nginxconfig.io/,按照自己的需求进行操作就行了。
选择你的场景,填写好参数,系统就会自动生成配置文件。
开源地址:github.com/digitalocean/nginxconfig.io
网站:digitalocean.com/community/tools/nginx
下载 生成的配置: nginxconfig.io-example.com.tar.gz
然后 上传 到你的服务器的/etc/nginx
目录.
或, 复制压缩配置的base64字符串,将其粘贴到服务器的命令行并执行。
进入你的 NGINX服务器上的配置目录:
cd /etc/nginx
创建当前NGINX配置的备份:
tar -czvf nginx_$(date +'%F_%H-%M-%S').tar.gz nginx.conf sites-available/ sites-enabled/ nginxconfig.io/
使用tar解压新的压缩配置
tar -xzvf nginxconfig.io-example.com.tar.gz
在您的服务器上运行此命令生成Diffie-Hellman keys:
openssl dhparam -out /etc/nginx/dhparam.pem 2048
创建一个通用的ACME-challenge目录(用于 Let's Encrypt):
mkdir -p /var/www/_letsencrypt
chown www-data /var/www/_letsencrypt
注释掉配置中的SSL相关指令:
sed -i -r 's/(listen .*443)/\1; #/g; s/(ssl_(certificate|certificate_key|trusted_certificate) )/#;#\1/g; s/(server \{)/\1\n ssl off;/g' /etc/nginx/sites-available/example.com.conf
重新加载你的NGINX服务器:
sudo nginx -t && sudo systemctl reload nginx
使用Certbot从 Let's Encrypt 获得SSL证书:
certbot certonly --webroot -d example.com --email info@example.com -w /var/www/_letsencrypt -n --agree-tos --force-renewal
在配置中取消注释SSL相关指令:
sed -i -r -z 's/#?; ?#//g; s/(server \{)\n ssl off;/\1/g' /etc/nginx/sites-available/example.com.conf
重新加载你的NGINX服务器:
sudo nginx -t && sudo systemctl reload nginx
配置Certbot,当NGINX成功更新证书时重新加载:
echo -e '#!/bin/bash\nnginx -t && systemctl reload nginx' | sudo tee /etc/letsencrypt/renewal-hooks/post/nginx-reload.sh
sudo chmod a+x /etc/letsencrypt/renewal-hooks/post/nginx-reload.sh
让我们开始吧! 🎉
重新加载NGINX以载入新的配置:
sudo nginx -t && sudo systemctl reload nginx