Nginx 反向代理

作者:elvbyte 发布时间: 2026-04-09 阅读量:3

要在腾讯云服务器上实现域名与端口的映射,您需要通过 Nginx 反向代理来实现。 以下是详细步骤:

一、准备环境

1、确保网站正常运行

确认程序已启动:www.xxxxx.com 运行在 8080 端口(可通过 http://IP:8080 访问)。

2、开放安全组端

  • 登录腾讯云控制台 → 云服务器 → 安全组 → 配置规则。

  • 开放 80(HTTP)、443(HTTPS)端口(供外部访问域名)。

  • 确保 8080 端口已开放(仅需本地访问,无需公网开放)。

二、安装并配置 Nginx

1、安装 Nginx

$ sudo apt update
$ sudo apt install nginx -y

2、创建配置文件

(1)进入 Nginx 配置目录

$ cd /etc/nginx/sites-available

(2)为 halo.elvbyte.com 创建配置

$ sudo vim xxxxx.conf

内容如下:

server {
  listen 80;
  # 绑定域名
  server_name www.xxxxx.com;
  location / {
    # 转发到本机 8080 端口
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

3、启用配置

将配置文件链接到 sites-enabled:

$ sudo ln -s /etc/nginx/sites-available/xxxxx.conf /etc/nginx/sites-enabled/

4、测试并重启 Nginx

(1)检查配置是否正确

$ sudo nginx -t

(2)重启生效

$ sudo systemctl restart nginx

三、配置域名解析

1、登录域名注册商控制台

(1)为域名添加 A 记录

记录类型:A
主机记录:www
记录值:云服务器公网 IP
TTL:默认值(通常 600 秒)

四、访问以下地址测试

五、HTTPS 配置(可选)

1、免费获取 SSL 证书

$ sudo apt update
$ sudo apt install certbot python3-certbot-nginx -y
$ sudo nginx -t
$ sudo systemctl reload nginx
$ sudo certbot --nginx -d www.xxxxx.com

按提示操作后,Nginx 会自动配置 HTTPS 并强制跳转 HTTP → HTTPS。

2、使用云服务器商证书

(1)下载证书

请在 SSL 证书控制台 中选择您需要安装的证书并单击下载

(2)证书解压

在弹出的 “证书下载” 窗口中,服务器类型选择 Nginx,单击下载并解压缩 cloud.tencent.com 证书文件包到本地目录。 解压缩后,可获得相关类型的证书文件。其中包含 cloud.tencent.com_nginx 文件夹:

① 文件夹名称:cloud.tencent.com_nginx

② 文件夹内容

  • cloud.tencent.com_bundle.crt 证书文件

  • cloud.tencent.com_bundle.pem 证书文件

  • cloud.tencent.com.key 私钥文件

  • cloud.tencent.com.csr CSR 文件

(3)上传证书

将已获取到的 cloud.tencent.com_bundle.crt 证书文件和 cloud.tencent.com.key 私钥文件从本地目录拷贝到 Nginx 服务器的 /etc/nginx 目录下。

(4)配置证书

编辑 Nginx 根目录下的 nginx.conf 文件。

server {
 #SSL 默认访问端口号为 443
 listen 443 ssl;
 #请填写绑定证书的域名
 server_name cloud.tencent.com; 
 #请填写证书文件的相对路径或绝对路径
 ssl_certificate  cloud.tencent.com_bundle.crt; 
 #请填写私钥文件的相对路径或绝对路径
 ssl_certificate_key cloud.tencent.com.key; 
 ssl_session_timeout 5m;
 #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
 #请按照以下协议配置
 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_prefer_server_ciphers on;
 location / {
   #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。 
   #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
   root html;
   index index.html index.htm;
 }
}
server {
 listen 80;
 #请填写绑定证书的域名
 server_name cloud.tencent.com; 
 #把http的域名请求转成https
 return 301 https://$host$request_uri; 
}

(5)验证配置

nginx -t

(6)重启生效

sudo systemctl restart nginx

六、常见问题排查

1、Nginx 报错

  • 运行 sudo nginx -t 检查语法错误。

  • 查看日志:tail -f /var/log/nginx/error.log。

2、端口不同

检查服务是否监听本地端口:

# 确认 8080 端口被占用
$ netstat -tunlp | grep 8080

3、域名无法解析

完成以上步骤后,您的域名即可通过 80 端口访问后端服务,无需暴露 8080 端口到公网,提升安全性。