VPS配置Nginx


VPS配置Nginx

Nginx默认页面及反向代理

默认页面

Nginx 默认把网页文件存放在 /var/www/html(绝对路径,现在在root文件夹)。我们先进入这个文件夹:


cd /var/www/html

然后看看里面有什么(输入 ls):


ls

你应该会看到一个名字很长的文件,比如 index.nginx-debian.html。这就是你刚才看到的那个默认页面。

第二步:创建一个新的“首页”

我们不需要删除旧文件,只需要创建一个名字叫 index.html 的新文件。 因为 Nginx 的默认规则是:只要有 index.html,就优先展示它。

我们使用 Linux 最简单的文本编辑器 nano 来创建并编辑这个文件。

输入以下命令(注意前面要加 sudo,因为这个文件夹属于系统,普通用户没权限写):

sudo nano index.html

第三步:写入你的 HTML 代码

现在你应该进入了一个黑底白字的编辑界面。把下面的代码复制进去(或者随便写点什么英文):

<!DOCTYPE html>
<html>
<head>
    <title>My VPS</title>
    <style>
        body {
            background-color: #f0f0f0;
            font-family: sans-serif;
            text-align: center;
            padding-top: 50px;
        }
        h1 { color: #333; }
    </style>
</head>
<body>
    <h1>Hello World!</h1>
    <p>This is my first customized page.</p>
    <p>Nginx is running successfully!</p>
</body>
</html>

第四步:保存并退出(新手最容易卡住的地方!)

nano 编辑器的操作和 Windows 记事本不一样,全是快捷键操作:

保存文件:按键盘上的 Ctrl + O (字母O),然后按 回车 (Enter) 确认文件名。

退出编辑器:按 Ctrl + X

现在,不需要重启 Nginx,直接去你的浏览器,刷新刚才那个页面。

Nginx 最强大的功能——反向代理 (Reverse Proxy)。

我们需要写一张“指引条”,告诉 Nginx:如果有客人找 kevinx.cc,就把他转到 127.0.0.1:5000(Python)。

我们采用最佳实践的方式来配置,不要直接修改原来的默认文件,而是新建一个专属配置文件。

第一步:清理旧的“默认配置”

为了防止冲突(因为默认配置也在占用 80 端口),我们需要先把它“关掉”(其实就是删掉它的软链接,原文件还在)。

在终端输入:

sudo rm /etc/nginx/sites-enabled/default

第二步:创建你的专属配置文件

我们需要在 /etc/nginx/sites-available/ 下创建一个新文件。假设你的项目叫 myapp。

输入:

sudo nano /etc/nginx/sites-available/myapp

第三步:写入配置代码 (核心步骤)

把下面的代码复制进去。这是最标准、最简洁的反向代理配置:


server {
    # 1. 监听 80 端口 (HTTP)
    listen 80;
    
    # 2. 服务器名字 (域名或 IP)
    # 如果你有域名就填域名,没有就填你的 VPS IP 地址 (比如 123.45.67.89)
    # 如果暂时不想管,填下划线 _ 代表“任何访问者”
    server_name kevinx.cc www.kevinx.cc;

    # 3. 核心转发规则
    location / {
        # 把请求转发给本机的 8000 端口
        proxy_pass http://127.0.0.1:8000;

        # 下面这几行是“标准头部信息”
        # 作用:把顾客的真实 IP 告诉 Python,否则 Python 以为所有请求都来自 Nginx (127.0.0.1)
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

(按 Ctrl+O 回车保存,Ctrl+X 退出)

第四步:激活这个配置

Linux 的 Nginx 有个很聪明的设计:

sites-available: 存放所有写好的配置(仓库)。

sites-enabled: 存放正在生效的配置(货架)。

你需要把刚才写的文件“链接”到生效目录去:


sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/

第五步:检查并重启

在重启之前,养成好习惯,先检查有没有写错字:

sudo nginx -t

如果看到 syntax is oktest is successful,说明没问题。

如果报错,它会告诉你是第几行写错了。

最后,重启 Nginx 加载新配置:

sudo systemctl restart nginx

再次运行 Certbot SSL 配置

我们要让 Certbot 重新扫描一次,把 SSL 配置“注入”进去。

输入:

sudo certbot --nginx

接下来会出现的情况:

它会检测到你在配置文件里写的域名,问你是不是要给这几个域名配置 HTTPS。输入对应的数字(例如 1 或 1,2),回车。

关键点: 因为你之前申请过证书,它可能会提示你:

You have an existing certificate that has exactly the same domains... (1) Attempt to reinstall this existing certificate (尝试重新安装现有证书) (2) Renew & replace the cert (重新申请并替换)

请选择 1 (Reinstall)。因为证书还在硬盘里,我们要做的只是把配置找回来,不需要重新向官方申请。

接着它可能会问你是否要开启 Redirect (强制跳转):

(1) No redirect (2) Redirect

建议选择 2。这样以后用户访问 http:// 会自动跳到 https://,更安全。

第三步:大功告成 Certbot 跑完后,它会自动修改你的 Nginx 配置并重启服务。