Ubuntu 上使用 Nginx 实现反向代理并启用 HTTPS(详细教程)
Ubuntu 上使用 Nginx 实现反向代理并启用 HTTPS(详细教程)
拒绝使用宝塔,虽然宝塔很好用方便,但是他非常占用资源,所以我正在尝试转换我使用服务器的方式,通过命令来才做这些,下面是我的详细步骤。
在这篇教程中,我们将详细介绍如何在 Ubuntu 系统上使用 Nginx 搭建一个反向代理,同时使用 Let’s Encrypt 为域名启用 HTTPS。本文适用于那些已经有了域名,并希望通过反向代理让自己的域名指向另一个服务器的用户。
文章目录
前提条件
- 一台运行 Ubuntu 系统的服务器。
- 已安装 Nginx Web 服务器。
- 有一个已解析到服务器的域名(例如:
share.moshayaoji.site
)。 - 可以访问终端,并具有
sudo
权限。
第一步:更新系统
在安装或配置任何软件之前,确保你的系统是最新的。
sudo apt update
sudo apt upgrade -y
第二步:安装 Nginx
如果你还没有安装 Nginx,可以通过以下命令来安装它:
sudo apt install nginx
安装完成后,启动 Nginx 并设置其开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
确认 Nginx 服务状态:
sudo systemctl status nginx
你可以通过访问服务器的 IP 地址(如 http://你的服务器IP
)来测试是否安装成功。
第三步:配置 Nginx 反向代理
前提是域名解析到了服务器。
接下来,我们将 Nginx 配置为反向代理,以使访问域名 share.moshayaoji.site
时,可以代理到其他服务器(例如:http://127.0.0.1:8300)。
1. 创建网站根目录
首先,创建用于存放站点的根目录:
sudo mkdir -p /var/www/share.moshayaoji.site/html
sudo chown -R $USER:$USER /var/www/share.moshayaoji.site/html
sudo chmod -R 755 /var/www/share.moshayaoji.site
2. 编辑 Nginx 配置文件
接下来,创建 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/share.moshayaoji.site
在文件中添加以下配置:
server {
listen 80;
server_name share.moshayaoji.site;
location / {
proxy_pass http://127.0.0.1:8300;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
3. 启用站点并重启 Nginx
通过创建符号链接来启用配置:
sudo ln -s /etc/nginx/sites-available/share.moshayaoji.site /etc/nginx/sites-enabled/
测试 Nginx 配置是否正确:
sudo nginx -t
如果没有错误,重启 Nginx 以应用配置:
sudo systemctl reload nginx
第四步:使用 Let’s Encrypt 启用 HTTPS
为你的域名启用 HTTPS 是保护用户数据并提高网站信任度的重要步骤。我们将使用 Let’s Encrypt 提供的免费 SSL 证书。
1. 安装 Certbot 和 Nginx 插件
Certbot 是一个自动化工具,它可以帮助你从 Let’s Encrypt 获取 SSL 证书并自动配置 Nginx。
sudo apt install certbot python3-certbot-nginx
2. 获取 SSL 证书
运行以下命令以为你的域名 share.moshayaoji.site
获取 SSL 证书:
sudo certbot --nginx -d share.moshayaoji.site
Certbot 将会:
- 为你设置 SSL 证书。
- 自动更新 Nginx 配置以启用 HTTPS。
在获取证书时,Certbot 会询问你是否希望自动将 HTTP 请求重定向到 HTTPS。选择“是”以确保用户始终通过 HTTPS 访问网站。
3. 测试 SSL 配置
获取证书后,Certbot 会自动配置并重新加载 Nginx。你可以通过以下命令再次测试 Nginx 配置是否正确:
sudo nginx -t
如果配置无误,Nginx 将会启用 HTTPS,你可以通过浏览器访问 https://share.moshayaoji.site
来验证 SSL 是否正常工作。
4. 自动续期证书
Let’s Encrypt 证书的有效期为 90 天,但 Certbot 会自动为你续期。你可以通过以下命令模拟续期过程,以确保一切正常:
sudo certbot renew --dry-run
Certbot 将会设置一个自动续期的任务,无需你手动干预。
第五步:强制将 HTTP 重定向到 HTTPS(可选)
如果在获取证书时未选择自动重定向,你可以手动在 Nginx 配置中添加强制重定向。编辑配置文件:
sudo nano /etc/nginx/sites-available/share.moshayaoji.site
添加以下内容,以强制将所有 HTTP 请求重定向到 HTTPS:
server {
listen 80;
server_name share.moshayaoji.site;
return 301 https://$host$request_uri;
}
保存并退出编辑器,然后重新加载 Nginx:
sudo systemctl reload nginx
现在,所有的 HTTP 请求都会自动重定向到 HTTPS。
结语
通过以上步骤,你成功在 Ubuntu 系统上使用 Nginx 搭建了一个反向代理,并通过 Let’s Encrypt 启用了 HTTPS。你现在拥有了一个安全、功能完善的网站,能够通过域名进行反向代理,并确保用户访问时使用安全的 HTTPS 协议。
更多推荐
所有评论(0)