华为云Linux云服务器搭建Nginx:从零到生产的完整部署指南
1. 引言:为什么选择华为云与Nginx
在云计算时代,Web服务器的部署早已不再是机房里的物理机器与网线,而是通过几次点击与几行命令就能在云端完成的事情。华为云作为国内领先的云服务提供商,其弹性云服务器(ECS)凭借稳定的性能、灵活的网络配置以及完善的安全体系,成为大量企业和开发者部署Web应用的首选平台。而Nginx作为一款高性能的HTTP服务器和反向代理服务器,以其事件驱动的异步架构、低内存占用和高并发处理能力著称,两者的结合堪称云端Web部署的黄金组合。
Nginx最初由俄罗斯开发者Igor Sysoev于2004年发布,旨在解决当时著名的C10K问题——即单台服务器同时处理一万个并发连接的挑战。与Apache等传统Web服务器采用的多进程或多线程模型不同,Nginx采用了事件驱动的异步非阻塞架构,这使得它在高并发场景下依然能够保持极低的资源消耗。如今,Nginx已不仅仅是一个Web服务器,它同时扮演着反向代理服务器、负载均衡器、HTTP缓存工具以及邮件代理服务器等多重角色。
本文将带领读者从零开始,在华为云Linux云服务器上完成Nginx的完整部署。无论你是刚接触云服务的学生、希望快速上线个人项目的开发者,还是零基础入门的运维新手,本文都将提供从购买云服务器到配置生产级Nginx服务的全流程指导。全文总计超过6000字,包含大量可直接运行的命令与配置示例,确保每一步都清晰可操作。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2. 华为云弹性云服务器的选购与创建
2.1 账号准备与实名认证
在开始部署之前,首先需要拥有一个华为云账号。访问华为云官网,点击注册按钮,按照指引完成账号注册流程。如果计划购买和使用中国大陆云服务区的资源,还需要完成实名认证。实名认证是使用华为云中国大陆节点资源的必要前提,请提前准备好相关证件材料。
2.2 弹性云服务器的购买配置
登录华为云控制台后,在服务列表中找到“弹性云服务器ECS”并进入,单击“购买弹性云服务器”按钮进入配置界面。在购买页面中,需要配置以下几个关键维度:
计费模式:华为云提供包年/包月、按需计费和竞价计费等多种计费模式。对于长期运行的生产环境,包年/包月通常更为经济;对于短期测试或开发环境,按需计费则更加灵活。初学者可以先选择按需计费进行体验,待熟悉后再根据实际需求调整。
区域与可用区:区域的选择直接影响到网络延迟和访问速度。建议就近选择靠近目标用户群体的区域。需要注意的是,Flexus应用服务器L实例创建后无法更换区域,请谨慎选择。同账号同区域的所有实例默认处于同一个VPC中,内网互通。
实例规格:华为云提供了丰富的实例规格族,从入门级的2核2G到高性能的计算密集型实例应有尽有。对于Nginx Web服务器的部署,入门级的2核2G配置即可满足中小流量的需求。如果后续还需要在同一台服务器上部署数据库、缓存等组件,建议适当提高配置。Flexus应用服务器L实例提供了主流的Linux系统镜像,可以通过系统镜像创建纯净、安全、稳定的运行环境。
镜像选择:建议选择CentOS 7/8、Ubuntu 22/10/18或Huawei Cloud EulerOS 2.0等主流Linux发行版。其中Huawei Cloud EulerOS 2.0是华为云自研的欧拉操作系统,对Nginx等常见应用提供了性能加速支持,购买时可以选择“应用加速”功能,系统将预安装性能优化后的Nginx版本。对于大多数用户来说,CentOS 7.9或Ubuntu 22.04 LTS是稳妥且社区支持广泛的选择。
网络与安全组:在购买过程中需要配置VPC、子网以及安全组规则。安全组是华为云提供的第一道网络访问控制防线,相当于云端的虚拟防火墙。后续将详细讲解安全组的配置方法。同时需要为云服务器绑定弹性公网IP(EIP),以便从公网访问Nginx服务。
存储与备份:系统盘建议选择至少40GiB,如果预计有大量日志或静态资源,可以额外添加数据盘。主机安全和云备份等附加服务可根据实际需求选配。
完成上述配置后,确认订单并支付,等待几分钟后云服务器即创建完成。
3. 网络访问控制:安全组与系统防火墙
3.1 理解云服务器的“双保险”安全模型
在华为云上部署Web服务时,一个常见的误区是:在控制台安全组中放行了80端口,Nginx也正常启动了,但网站就是无法从公网访问。这个问题背后隐藏着云服务器配置中典型且容易被忽视的“双保险”机制——云平台安全组和操作系统防火墙。
来自公网的HTTP请求需要穿越两道独立的关卡才能到达Nginx应用:第一道关卡是云平台安全组,它作用于云服务器实例的虚拟网卡级别,规则定义在云平台控制层面;第二道关卡是操作系统内部的软件防火墙(如firewalld、iptables),它运行在服务器内部。这两道关卡是串联关系,任何一关的阻拦都会导致访问失败。
3.2 安全组规则配置
登录华为云控制台,进入“安全组”页面,找到目标ECS实例关联的安全组,检查入方向规则。对于Nginx Web服务器,至少需要添加以下入方向规则:
- TCP端口22(SSH):用于远程登录管理,授权对象建议限制为管理员IP段而非0.0.0.0/0,以提高安全性
- TCP端口80(HTTP):Web服务默认端口,授权对象为0.0.0.0/0(如需公网访问)
- TCP端口443(HTTPS):如果后续部署SSL证书,需要开放此端口
配置时需注意:协议类型选择TCP,端口范围填写准确(如80/80),授权对象根据需要设置。常见疏漏包括误将端口填为8080等非常用端口、授权对象限制为特定IP段但实际需要公网访问、存在更高优先级的拒绝规则等。
3.3 操作系统防火墙管理
在CentOS 7及以上版本中,firewalld通常是默认启用的防火墙服务。即使安全组规则已正确配置,如果系统防火墙未放行相应端口,外部请求仍然无法到达Nginx。
以下是常用的防火墙管理命令:
# 查看防火墙状态
sudo systemctl status firewalld
# 查看当前开放端口列表
sudo firewall-cmd --list-ports
# 永久开放80端口(--permanent表示永久生效)
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
# 永久开放443端口
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
# 重新加载防火墙规则使配置生效
sudo firewall-cmd --reload
# 如需临时关闭防火墙(仅用于排查问题,生产环境不建议)
sudo systemctl stop firewalld在Ubuntu系统中,默认的防火墙管理工具是UFW(Uncomplicated Firewall):
# 查看UFW状态
sudo ufw status
# 允许80端口
sudo ufw allow 80/tcp
# 允许443端口
sudo ufw allow 443/tcp
# 启用UFW
sudo ufw enable4. 连接云服务器与基础环境准备
4.1 登录云服务器
云服务器创建完成后,可以通过多种方式登录。最常用的方式是使用SSH客户端(如PuTTY、Xshell或终端命令行)通过弹性公网IP连接:
ssh root@你的弹性公网IP首次登录时会提示确认主机指纹,输入购买时设置的root密码即可进入系统。为了安全起见,建议登录后立即修改默认密码,并考虑配置SSH密钥登录以替代密码认证。
4.2 更新系统与软件源
登录后,首先更新系统的软件包索引和已安装的软件包。对于CentOS系统:
sudo yum update -y对于Ubuntu系统:
sudo apt update && sudo apt upgrade -y为了更好地获取和更新系统及软件,建议将镜像源更新为华为云镜像源,这样可以获得更快的下载速度。
5. Nginx的安装方式
在Linux系统中,Nginx可以通过多种方式安装,最常见的是使用包管理器安装和源码编译安装。两种方式各有优劣,下面分别介绍。
5.1 使用包管理器安装Nginx
这是最简单快捷的安装方式,适用于绝大多数场景。
CentOS/RHEL系统:
对于CentOS和RHEL系统,首先需要启用EPEL(Extra Packages for Enterprise Linux)仓库,然后使用yum安装Nginx:
# 安装EPEL仓库
sudo yum install epel-release -y
# 安装Nginx
sudo yum install nginx -y也可以直接从Nginx官方仓库安装以获得最新版本:
# 下载Nginx官方仓库配置
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装Nginx
sudo yum install nginx -yUbuntu/Debian系统:
首先更新软件包列表,然后安装Nginx:
sudo apt update
sudo apt install nginx -y5.2 验证安装
安装完成后,可以通过以下命令验证Nginx是否安装成功:
# 查看Nginx版本
nginx -v
# 查看Nginx详细版本及编译参数
nginx -V5.3 源码编译安装Nginx
对于需要自定义编译模块或使用特定版本Nginx的场景,可以选择源码编译安装。这种方式虽然步骤较多,但提供了最大的灵活性。
# 安装编译依赖(CentOS)
sudo yum install gcc pcre-devel zlib-devel openssl-devel -y
# 安装编译依赖(Ubuntu)
sudo apt install build-essential libpcre3-dev zlib1g-dev libssl-dev -y
# 下载Nginx源码
wget http://nginx.org/download/nginx-1.24.0.tar.gz
# 解压源码
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
# 配置编译选项
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module
# 编译并安装
make && sudo make install源码编译安装的Nginx默认安装在/usr/local/nginx目录下,需要手动配置systemd服务单元文件以实现服务管理。
6. Nginx服务管理与验证
6.1 启动Nginx服务
安装完成后,启动Nginx服务并设置开机自启:
# 启动Nginx
sudo systemctl start nginx
# 设置开机自启
sudo systemctl enable nginx对于源码编译安装的情况,启动方式略有不同:
# 启动Nginx
/usr/local/nginx/sbin/nginx
# 停止Nginx
/usr/local/nginx/sbin/nginx -s stop
# 重新加载配置
/usr/local/nginx/sbin/nginx -s reload6.2 常用服务管理命令
无论通过哪种方式安装,以下命令都是日常运维中常用的:
# 查看Nginx服务状态
sudo systemctl status nginx
# 停止Nginx服务
sudo systemctl stop nginx
# 重启Nginx服务
sudo systemctl restart nginx
# 重新加载Nginx配置(不中断服务,推荐方式)
sudo systemctl reload nginx6.3 验证Nginx是否正常工作
启动Nginx后,在浏览器中输入云服务器的弹性公网IP地址,如果看到Nginx的欢迎页面,说明Nginx已成功运行。如果无法访问,请按照第3章的方法检查安全组规则和系统防火墙配置。
也可以在服务器本地使用curl命令测试:
curl http://localhost如果返回Nginx欢迎页面的HTML内容,说明服务正常运行。
7. Nginx配置文件详解
7.1 配置文件结构
Nginx的配置文件通常位于/etc/nginx/目录下,主要配置文件是nginx.conf。Nginx的配置文件采用块结构,由多个指令和块组成。典型的配置文件结构如下:
/etc/nginx/
├── nginx.conf # 主配置文件
├── conf.d/ # 通用配置片段目录
│ └── default.conf # 默认虚拟主机配置
├── sites-available/ # 可用站点配置(Ubuntu)
│ └── default
├── sites-enabled/ # 已启用站点配置(Ubuntu)
│ └── default -> ../sites-available/default
└── mime.types # MIME类型映射文件在CentOS系统中,虚拟主机配置通常放在/etc/nginx/conf.d/目录下;在Ubuntu系统中,则采用sites-available和sites-enabled的机制,通过符号链接来启用或禁用站点。
7.2 主配置文件核心指令
nginx.conf包含以下几个核心配置块:
- main全局配置:设置Nginx运行的用户、工作进程数、PID文件路径、错误日志路径等全局参数
- events块:配置Nginx的事件处理模型,如worker_connections(每个工作进程的最大连接数)
- http块:HTTP服务的核心配置,包含MIME类型、日志格式、Gzip压缩、虚拟主机等配置
以下是nginx.conf的简化示例:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
include /etc/nginx/conf.d/*.conf;
}8. 虚拟主机配置:托管第一个网站
8.1 创建网站目录与测试页面
Nginx通过配置服务器块(server block)来管理不同的网站,每个服务器块配置了一个特定域名或IP地址的行为。
首先创建网站根目录和测试页面:
# 创建网站目录
sudo mkdir -p /var/www/example.com/html
# 创建测试页面
echo "Welcome to Example.com!
" | sudo tee /var/www/example.com/html/index.html8.2 配置虚拟主机
在/etc/nginx/conf.d/目录下创建站点配置文件(CentOS)或在/etc/nginx/sites-available/目录下创建(Ubuntu):
# CentOS
sudo vim /etc/nginx/conf.d/example.com.conf
# Ubuntu
sudo vim /etc/nginx/sites-available/example.com添加以下配置内容:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}在Ubuntu系统中,还需要创建符号链接以启用站点:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/8.3 测试配置并重载Nginx
每次修改配置文件后,都应该先测试配置语法是否正确:
# 测试配置文件语法
sudo nginx -t如果输出包含“syntax is ok”和“test is successful”,说明配置正确。然后重载Nginx使配置生效:
sudo systemctl reload nginx此时在浏览器中访问example.com(需域名解析指向服务器IP),即可看到测试页面。
9. 反向代理配置实战
9.1 反向代理的基本概念
反向代理是Nginx最核心的功能之一。在反向代理模式下,客户端将请求发送到反向代理服务器,然后由反向代理服务器将请求转发给后端的真实服务器,再将响应返回给客户端。反向代理服务器和后端服务器对外看做一个整体。这种架构带来了诸多好处:隐藏真实服务器信息、负载均衡、缓存加速、SSL终结等。
9.2 配置HTTP反向代理
假设后端有一台运行在8080端口的应用服务器(如Tomcat、Gunicorn等),需要通过Nginx将80端口的请求代理到后端:
server {
listen 80;
server_name api.example.com;
location / {
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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}proxy_set_header指令用于将客户端的原始信息传递给后端服务器,这对于后端应用获取真实客户端IP和协议非常重要。
9.3 配置WebSocket反向代理
对于需要支持WebSocket的应用,需要在反向代理配置中添加额外的头部:
location /ws/ {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}10. 负载均衡配置实战
10.1 upstream负载均衡配置
Nginx通过upstream指令定义一组后端服务器,实现负载均衡。以下配置将请求分发到三台后端服务器:
upstream backend_servers {
# 负载均衡算法,默认为轮询(round-robin)
server 192.168.1.10:8080 weight=3;
server 192.168.1.11:8080 weight=2;
server 192.168.1.12:8080 weight=1;
# 健康检查:标记为down的服务器不会被转发请求
server 192.168.1.13:8080 down;
}
server {
listen 80;
server_name loadbalance.example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}10.2 负载均衡算法
Nginx支持多种负载均衡算法:
- 轮询(round-robin):默认算法,按顺序轮流分配请求
- 加权轮询(weighted round-robin):通过weight参数设置权重,权重越高分配的请求越多
- 最少连接(least_conn):将请求分配给当前活动连接数最少的服务器
- IP哈希(ip_hash):根据客户端IP地址的哈希值分配请求,确保同一客户端的请求始终被分配到同一台服务器,用于会话保持
upstream backend_servers {
ip_hash;
server 192.168.1.10:8080;
server 192.168.1.11:8080;
server 192.168.1.12:8080;
}11. HTTPS与SSL证书配置
11.1 获取SSL证书
可以通过华为云SSL证书管理服务购买SSL证书。购买证书时,下载证书格式应选择PEM(适用于Nginx和SLB),或者证书类型选择Nginx。也可以使用Let‘s Encrypt等免费证书服务。
11.2 配置HTTPS虚拟主机
证书安装前,务必在安全组和系统防火墙中开启443端口。将证书文件(.crt/.pem)和私钥文件(.key)上传到服务器,然后在Nginx配置中添加HTTPS server块:
server {
listen 443 ssl http2;
server_name secure.example.com;
ssl_certificate /etc/nginx/ssl/secure.example.com.crt;
ssl_certificate_key /etc/nginx/ssl/secure.example.com.key;
# SSL协议与加密套件配置(安全加固)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
root /var/www/secure.example.com/html;
index index.html;
}11.3 HTTP自动跳转HTTPS
为了强制所有访问都使用HTTPS,可以配置HTTP server块将所有请求重定向到HTTPS:
server {
listen 80;
server_name secure.example.com;
return 301 https://$server_name$request_uri;
}12. 日志管理与分析
12.1 日志类型与配置
Nginx日志主要分为两种:访问日志(access_log)和错误日志(error_log),这些日志对于系统监控、性能分析、故障排查都非常有用。
在nginx.conf的http块中配置全局日志格式和路径:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;也可以在具体的server块或location块中覆盖日志配置,实现不同站点的日志分离。
12.2 日志分析与监控
常用的日志分析命令:
# 查看访问日志最后10行
tail -10 /var/log/nginx/access.log
# 实时监控访问日志
tail -f /var/log/nginx/access.log
# 统计独立IP访问次数
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# 统计HTTP状态码分布
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn华为云日志服务LTS支持Nginx日志的采集、存储和分析,可以通过配置将Nginx日志接入LTS进行集中管理。
13. 性能优化与调优
13.1 工作进程与连接数优化
worker_processes指令设置Nginx的工作进程数,通常设置为等于服务器的CPU核心数:
worker_processes auto;worker_connections指令设置每个工作进程的最大并发连接数,计算公式为:最大并发连接数 = worker_processes * worker_connections。对于高并发场景,可以适当提高此值:
events {
worker_connections 4096;
use epoll;
}13.2 启用Gzip压缩
启用Gzip压缩可以显著减少传输数据量,提升页面加载速度:
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/json;13.3 静态文件缓存与优化
对于静态资源(图片、CSS、JS等),合理配置缓存头可以减少重复请求:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}对于华为云Flexus X实例,如果选择Huawei Cloud EulerOS 2.0镜像并开启应用加速功能,系统将预安装性能优化后的Nginx版本,可以获得最优性能体验。
13.4 长连接与HTTP/2优化
启用HTTP/2和调整keepalive参数可以提升网络传输效率:
# 在listen指令中启用HTTP/2
listen 443 ssl http2;
# 调整keepalive超时时间
keepalive_timeout 65;
keepalive_requests 100;14. 安全加固与最佳实践
14.1 隐藏Nginx版本信息
隐藏Nginx版本号可以减少攻击者针对特定版本漏洞的利用风险:
# 在nginx.conf的http块中添加
server_tokens off;14.2 限制请求方法
只允许特定的HTTP方法,拒绝不必要的请求:
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 405;
}14.3 防止恶意访问
通过Nginx的access模块可以限制特定IP或网段的访问:
location /admin/ {
allow 192.168.1.0/24;
deny all;
}14.4 设置安全头部
添加安全相关的HTTP响应头:
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;14.5 定期更新与日志监控
定期更新Nginx版本以修复安全漏洞,同时通过日志监控及时发现异常访问行为。
15. 常见问题排查
当Nginx服务出现异常时,可以按照以下步骤进行排查:
- 检查安全组规则:确认相关端口(80、443等)已在华为云控制台安全组中放行
- 检查系统防火墙:确认firewalld或UFW已开放相应端口
- 检查Nginx服务状态:systemctl status nginx确认服务是否正常运行
- 检查端口监听状态:netstat -tlnp | grep nginx确认Nginx是否监听在正确的IP和端口上
- 查看错误日志:tail -50 /var/log/nginx/error.log获取详细的错误信息
- 测试配置文件语法:nginx -t确认配置文件没有语法错误
如果80端口配置后仍然无法访问,最常见的原因是安全组已配置但系统防火墙未放行,或Nginx监听地址为127.0.0.1而非0.0.0.0。
16. 总结
本文全面介绍了在华为云Linux云服务器上搭建Nginx的完整流程,从云服务器的选购与创建、网络访问控制的双保险机制、Nginx的安装与服务管理,到虚拟主机配置、反向代理与负载均衡、HTTPS证书部署、日志管理、性能优化以及安全加固等各个环节。通过本文的学习,读者应该能够独立在华为云环境上部署一个安全、高性能、生产可用的Nginx Web服务器。
Nginx作为一款优秀的Web服务器和反向代理工具,其强大的功能和灵活的配置使其成为现代Web架构中不可或缺的组件。掌握Nginx的部署与配置,是每一位后端开发者和运维工程师的核心技能之一。希望本文能为读者在华为云上的实践提供有价值的参考。
问答环节
问1:在华为云上部署Nginx后,公网无法访问,最常见的原因是什么?
最常见的原因是“双保险”机制中只配置了安全组而忽略了系统防火墙。华为云的安全组和操作系统内部的防火墙(如firewalld)是串联的两道关卡,需要在安全组和系统防火墙中都放行相应端口(如80、443)。另外也要确认Nginx监听地址为0.0.0.0而非127.0.0.1。
问2:Nginx配置文件修改后如何生效?重启和重载有什么区别?
修改配置文件后,应先执行nginx -t测试语法是否正确。语法正确后,可以使用systemctl reload nginx重载配置,这种方式不会中断现有连接,是生产环境的推荐方式。而systemctl restart nginx会完全停止并重启服务,会导致短暂的连接中断。
问3:如何在华为云上为Nginx配置HTTPS?
首先需要通过华为云SSL证书管理服务购买SSL证书或使用第三方证书。下载证书时选择PEM格式(适用于Nginx)。然后在安全组和系统防火墙中开放443端口。最后在Nginx配置中添加listen 443 ssl的server块,并指定ssl_certificate和ssl_certificate_key的路径。
问4:Nginx作为反向代理时,如何让后端服务器获取到真实的客户端IP?
需要在反向代理配置中使用proxy_set_header指令将客户端的真实IP传递给后端。关键配置包括:proxy_set_header X-Real-IP $remote_addr和proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for。这样后端应用就可以从X-Real-IP或X-Forwarded-For头部获取真实客户端IP。
问5:Nginx的worker_processes和worker_connections应该如何设置?
worker_processes通常设置为服务器的CPU核心数,可以使用auto自动检测。worker_connections的值取决于服务器的内存和预期的并发量,一般设置为1024-4096。最大并发连接数 = worker_processes * worker_connections。对于华为云Flexus X实例,如果选择Huawei Cloud EulerOS 2.0镜像并开启应用加速功能,系统会自动进行性能优化。
问6:Nginx的访问日志和错误日志分别记录什么内容?如何查看?
访问日志(access_log)记录了客户端访问Nginx的详细信息,包括客户端IP、请求时间、请求方法、请求URL、HTTP状态码、响应大小、Referer和User-Agent等。错误日志(error_log)记录了Nginx在处理请求过程中遇到的错误和警告信息。默认路径分别为/var/log/nginx/access.log和/var/log/nginx/error.log,可以使用tail -f命令实时查看。



