文章背景图

【网站构建】Nginx反向代理

2026-06-09
14
-
- 分钟
|

反向代理,即把公网地址隐藏,通过域名访问搭建网站。

【前提条件】

公网地址+端口,可以正常访问。

【目的】

让ngnix站在服务器的门口,把关每个ip,把他们送去其访问服务对应的端口。服务器网站的”摆渡人“。

(服务器一般都开80/443 端口,假如服务就在80或443端口,那便可在域名服务上直接添加一条指向服务器公网网址的记录即可。)

【方法】

1. 下载nginx

sudo apt update #更新索引,找最新安装包
sudo apt install nginx -y #安装
sudo systemctl enable nginx #设置开机自启
sudo systemctl start nginx #原神启动!
  1. 创建nginx配置

sudo vim /etc/nginx/sites-available/xxx #vim和nano随意选,我习惯vim了

输入以下配置:

  server {
    listen 80;
    server_name 你的网址;

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name 你的网址;

    ssl_certificate /etc/letsencrypt/live/域名(请求后一般会自动放到这里)/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/域名(请求后一般会自动放到这里)/privkey.pem;

    location / {
        proxy_pass http://本地地址+端口;

        proxy_http_version 1.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;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
}

启用配置

  sudo ln -sf /etc/nginx/sites-available/xxx /etc/nginx/sites-enabled/xxx

重启服务

sudo nginx -t #检查 Nginx 配置文件是否存在语法错误
sudo systemctl restart nginx #重启 Nginx 服务
  1. 申请证书

我直接申请证书一直报错,所以通过dns获取证书。

sudo certbot certonly --manual --preferred-challenges dns -d 域名

Certbot 会给你一条 TXT 记录,例如:

名称: xxxx
值: xxxxxxxx

在 DNS 控制台添加:

主机记录: xxxx
记录类型: TXT
记录值: certbot 给你的 value

添加后不要立刻按回车,先查:

nslookup -type=TXT 公网+端口

看到对应 TXT 值后,再回到 Certbot 按回车。

成功后证书路径是:

/etc/letsencrypt/live/xxx
/etc/letsencrypt/live/xxx

5. 测试

sudo nginx -t
sudo systemctl restart nginx
curl -i https://域名

(不过这个证书一般是90天,到期要自己再弄一次。)

评论交流

文章目录