编辑
2026-05-05
计算机网络
00

目录

前言:
nginx反代原理
下面是一段nginx的配置代码(含义在注释里面)
http和https的区别,和nginx有什么联系
http:明文传输,信息极其容易被盗取
https:暗文传输,数据安全,可信度高
nginx:用来掌管http和https,根据域名分发到不同内网端口,同时也能解密和加密https
为什么要用 Nginx 做反向代理?(核心 5 点)
1. 统一霸占 80/443 端口,多域名共用
2. 统一管理 HTTPS 证书
3. 隐藏后端真实端口和架构
4. 高性能、高并发、稳定不崩
5. 自带超强附加功能
下面为具体的实操步骤
1. 安装nginx
2. 编辑文件写配置
3. 检查并重启
4. 放行端口和开放防火墙,同时记得在阿里云/腾讯云放行80端口
5. 验证
6. 配置https
1. 安装Certbot
2. 一键获取证书并配置Nginx(记得改域名)
3. 按照提示输入邮箱,然后一路yes. Certbot会自动帮你配置好nginx配置文件
4. 验证
5. 放行443端口
查看nginx配置文件目录下的文件
简单来说,Nginx 就是云服务器的统一入口网关,独占 80/443 端口,通过域名分流到各个本地内网服务,统一管理 HTTPS 证书、隐藏后端服务端口、高性能稳定运行,是自建站点、多域名部署必备的神器,掌握一套模板即可无限复用。

前言:

这两天不停弄frp反向代理和nginx反向代理,颇有体会,决定写一篇nginx的介绍和入门文章

nginx反代原理

下面是一段nginx的配置代码(含义在注释里面)

server { listen 80; # 监听80端口 server_name copyparty.yxjxxr.site; # 网站的域名是这个 location / { # 匹配所有请求(不管访问首页还是子页面,都走这里) proxy_pass http://127.0.0.1:3923; # 将用户的请求转发到本机这个端口 proxy_set_header X-Forwarded-Proto $scheme; # 告诉后端:用户是 HTTP 还是 HTTPS 访问 proxy_set_header X-Real-IP $remote_addr; # 把用户真实 IP带给后端 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 传递用户真实 IP proxy_set_header Host $host; # 把真实域名带给后端服务 } }

http和https的区别,和nginx有什么联系

http:明文传输,信息极其容易被盗取

https:暗文传输,数据安全,可信度高

nginx:用来掌管http和https,根据域名分发到不同内网端口,同时也能解密和加密https

由此观之,nginx在域名反代,保护数据隐私,服务安全当中起着巨大的作用,以下从5点说明为什么要用nginx

为什么要用 Nginx 做反向代理?(核心 5 点)

1. 统一霸占 80/443 端口,多域名共用

一台服务器只有一个 80、一个 443。

  • Nginx 独占这两个端口

  • 域名 把流量分给不同内网服务:

    • blog.yxjxxr.site → 127.0.0.1:8081
    • copyparty.yxjxxr.site → 127.0.0.1:3923
  • 其他服务不用暴露公网端口,更安全

2. 统一管理 HTTPS 证书

  • 所有域名的 SSL 证书全在 Nginx 配置
  • 后端服务不用配置任何 HTTPS,只管跑裸 HTTP
  • Certbot 一键申请、自动续期,统一管控

3. 隐藏后端真实端口和架构

外网用户只看到域名,看不到你服务器开了哪些端口、跑了啥程序。

相当于前面挡了一道门,后端全藏在内网

4. 高性能、高并发、稳定不崩

Nginx 是事件驱动模型,上万并发都扛得住,占用资源极低。

挂个博客、网盘、小服务,常年不崩、不用重启。

5. 自带超强附加功能

  • 强制 HTTP 跳 HTTPS
  • 限速、防盗链、缓存、静态文件加速
  • 负载均衡(多台服务器分发流量)
  • 访问黑白名单、IP 封禁、防爬虫
特性NginxCaddyTraefik宝塔面板
性能并发极强一般
内存占用极低中等
配置方式手动写配置文件极简配置、自动 HTTPS自动识别容器、不用手写网页可视化
HTTPS 证书需手动 Certbot全自动申请续期全自动内置一键 SSL
多域名管理完美支持完美支持容器环境最强适合新手
自由度定制极高,能写复杂规则中等低,被面板锁死
适合场景服务器运维、自建服务、长期稳定跑极简懒人单服务Docker 集群、微服务纯新手建站
缺点需要懂一点配置语法小众教程少学习成本高臃肿、冗余、绑架环境

下面为具体的实操步骤

1. 安装nginx

# CentOS/RHEL sudo yum install nginx -y # Ubuntu/Debian sudo apt update sudo apt install nginx -y

如果报错,可看这篇[[系统安全配置]]

2. 编辑文件写配置

sudo vi /etc/nginx/conf.d/copyparty.conf # 写下面配置代码 server { listen 80; server_name copyparty.yxjxxr.site; location / { proxy_pass http://127.0.0.1:3923; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } }

3. 检查并重启

sudo nginx -t sudo systemctl restart nginx

如果发现你要反代的80端口和你之前弄的web应用冲突了,看这个[[解决nginx反代80端口冲突问题]]

4. 放行端口和开放防火墙,同时记得在阿里云/腾讯云放行80端口

开放防火墙指令看[[云服务器服务设置外网访问]]

# firewalld sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload # ufw sudo ufw allow 'Nginx HTTP'

5. 验证

http://copyparty.yxjxxr.site

6. 配置https

1. 安装Certbot

# 安装Certbot sudo yum install certbot python3-certbot-nginx

2. 一键获取证书并配置Nginx(记得改域名)

sudo certbot --nginx -d copyparty.yxjxxr.site

3. 按照提示输入邮箱,然后一路yes. Certbot会自动帮你配置好nginx配置文件

# 查看写好的nginx配置文件 cat /etc/nginx/conf.d/copyparty.conf

4. 验证

sudo nginx -t && sudo systemctl restart nginx # -t -> test,检查配置文件对不对

5. 放行443端口

# 放行HTTPS端口 sudo firewall-cmd --permanent --add-service=https # 重新加载防火墙 sudo firewall-cmd --reload # 查看已放行端口 sudo firewall-cmd --list-all

查看nginx配置文件目录下的文件

ls /etc/nginx/conf.d/

如果以后有新的服务要写,那就按照上面的步骤重来一遍就行,只需要改新的配置文件名和里面的端口号就好了,配置 HTTPS 时,只需要把命令里的域名换成自己的,执行一遍即可自动配置生效,一点都不麻烦!

简单来说,Nginx 就是云服务器的统一入口网关,独占 80/443 端口,通过域名分流到各个本地内网服务,统一管理 HTTPS 证书、隐藏后端服务端口、高性能稳定运行,是自建站点、多域名部署必备的神器,掌握一套模板即可无限复用。

本文作者:Deshill

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!