Nginx
参考资料
概念
- Nginx 是一个开源的 WEB 服务器, 它可以作为负载均衡器, 缓存服务器, 反向代理服务器等角色使用
- 反向代理的作用是将客户端的请求转发给后端的服务器, 然后将后端服务器的响应返回给客户端 这样可以实现负载均衡 (多个实际服务器), 并隐藏后端服务器的 IP 地址
- 可以配置轮询, 加权轮询, ip_hash 等策略
- Nginx 采用主从架构, 一个 Master 进程和多个 Worker 进程 (配置文件中指定)
- 通过虚拟主机的方式实现一服务器可以提供多个网站
- 配置 SSL 证书实现 https 访问
命令
nginx -s signal # 发送信号给 nginx 进程
# 常用信号
# stop 快速停止 nginx 服务器
# quit 正常停止 nginx 服务器
# reload 重新加载配置文件, 新配置生效
# reopen 重新打开日志文件
ngingx -t # 检查配置文件状态
ps aux|grep nginx # 查看 nginx 进程
配置文件
- conf 目录下的 nginx.conf, 默认配置的 nginx 监听的端口为 80
# 最外层是一些全局配置
events {
# 网络连接配置
}
http {
# 可以配置多个 server 块, 每一个都是一个虚拟主机
include path; # 引入其他配置文件
# 可以配置证书, 实现 https 访问
# 反向代理
upstream 代理名字 {
# 配置...
ip_hash; # 开启 ip_hash 模式
# 用户的请求根据其 ip 地址进行 hash 计算, 然后将请求分配到固定的后端服务器
server 服务器地址 weight = 10;
server 服务器地址 weight = 20;
}
server {
# 配置...
server_name 域名; # 配置域名
# 配置 http 请求重定向到 https
# 匹配 url 路径
location / { # 匹配根路径
root 相对路径; # 文件的目录
index 默认索引文件.html;
}
location /name {
proxy_pass http://代理名字;
}
}
}
防火墙
- 若无法访问, 可能是防火墙没有开启端口
- firwall-cmd: 是 Linux 提供的操作 firewall 的一个工具
- --permanent: 表示设置为持久
- --add-port: 标识添加的端口
service firewalld start # 启动防火墙
service firewalld restart # 重启防火墙
service firewalld stop # 停止防火墙
firewall-cmd --list-all # 查看防火墙规则
firewall-cmd --query-port=8080/tcp # 查询端口是否开放
firewall-cmd --permanent --add-port=80/tcp # 开放 80 端口
firewall-cmd --permanent --remove-port=8080/tcp # 移除端口
firewall-cmd --reload # 重启防火墙 ( 修改配置后要重启防火墙 )
替代方案
Caddy
- 与 Nginx 相比,Caddy 的最大优势在于其开箱即用的自动化特性,尤其是自动配置和管理 SSL 证书(通过 Let's Encrypt)
- Caddy 采用单进程架构,通过内置的 Go runtime 实现高并发处理能力,无需手动配置 worker 进程
配置示例
# 基本静态站点服务
example.com {
root * /var/www/html
file_server
}
# 反向代理配置
api.example.com {
reverse_proxy 127.0.0.1:8080
}
# 多个后端的负载均衡
service.example.com {
reverse_proxy 192.168.1.10:8080 192.168.1.11:8080 {
lb_policy round_robin
}
}
常用命令
caddy run # 启动 Caddy 服务器
caddy stop # 停止 Caddy 服务器
caddy reload # 重新加载配置文件
caddy validate # 验证配置文件的正确性
caddy adapt --config Caddyfile --pretty # 将 Caddyfile 转换为 JSON 格式配置(用于高级配置)