拒绝使用宝塔,虽然宝塔很好用方便,但是他非常占用资源,所以我正在尝试转换我使用服务器的方式,通过命令来才做这些,下面是我的详细步骤。

在这篇教程中,我们将详细介绍如何在 Ubuntu 系统上使用 Nginx 搭建一个反向代理,同时使用 Let’s Encrypt 为域名启用 HTTPS。本文适用于那些已经有了域名,并希望通过反向代理让自己的域名指向另一个服务器的用户。

前提条件

  1. 一台运行 Ubuntu 系统的服务器。
  2. 已安装 Nginx Web 服务器。
  3. 有一个已解析到服务器的域名(例如:share.moshayaoji.site)。
  4. 可以访问终端,并具有 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 协议。

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐