一、Nginx 的概念
Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。它以其高并发处理能力、低资源消耗和稳定性而闻名。Nginx 由 Igor Sysoev 开发,首次公开发布于 2004 年。Nginx 可以作为网页服务器、反向代理服务器、电子邮件代理服务器以及 TCP/UDP 负载均衡器。
- Web 服务器:Nginx 可以直接提供静态内容(如 HTML、CSS、图片等)给客户端浏览器。
- 反向代理服务器:Nginx 可以接收客户端请求,然后将请求转发到后端服务器,并将后端服务器的响应返回给客户端。这种方式可以隐藏真实的后端服务器,提高安全性,并实现负载均衡。其配置示例如下:
http { upstream backend { server backend1.example.com; server backend2.example.com; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; 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; } } }
- 负载均衡:Nginx 可以将请求分发到多台后端服务器上,以平衡负载,提高系统可用性和响应速度。可通过在配置中的upstream backend代码段内添加weight=x实现。
- 动静分离:nginx能将动态内容(如 PHP、Java 等生成的内容)和静态内容(如 HTML、CSS、JavaScript、图片等)分开处理。静态内容可以直接由 Nginx 提供服务,而动态内容则通过反向代理传递给后端应用服务器处理。这样可以减轻后端服务器的压力,提高响应速度。其配置示例如下:
http { upstream backend { server backend1.example.com; } server { listen 80; server_name example.com; # 静态内容配置 location /static/ { alias /path/to/static/files/; expires 30d; } # 动态内容配置 location / { proxy_pass http://backend; 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; } } }
二、Nginx 常见字段含义
在 Nginx 配置文件中,常用的字段包括:
- server:定义虚拟主机。
- location:匹配特定的 URL 路径,并对其应用特定的配置。
- listen:指定 Nginx 监听的 IP 地址和端口。
- root:指定网站根目录。
- index:指定默认的索引文件。
- proxy_pass:指定反向代理的目标地址。
- upstream:定义一组后端服务器,用于负载均衡。
三、天翼云开源镜像站Nginx部署涉及步骤
部署 Nginx 通常涉及以下几个步骤:准备环境、安装 Nginx、配置 Nginx、启动和管理 Nginx 服务。下面是详细的部署过程:
①准备环境(CtyunOS/CentOS/RHEL)
sudo yum groupinstall "Development Tools"
sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel
②通过包管理器安装nginx
sudo yum install epel-release
sudo yum install nginx
③配置nginx
Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf (示例)或 /usr/local/nginx/conf/nginx.conf(示例),示例配置如下:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections ½048;
}
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;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/conf.d/*.conf;
}
在 /etc/nginx/conf.d/ 目录下创建一个新的配置文件,例如 example.com.conf,并进行虚拟主机配置:
server {
listen 80;
server_name example.com;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location /api/ {
proxy_pass http://localhost: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;
}
}
④启动和管理nginx服务
检查语法:sudo nginx -t
重新加载配置:sudo systemctl reload nginx 或者 sudo /usr/local/nginx/sbin/nginx -s reload
启动和停止服务:sudo systemctl start nginx/sudo systemctl stop nginx 或者 sudo /usr/local/nginx/sbin/nginx -s stop
⑤防火墙配置
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
⑥监控和日志
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
总结
- 反向代理:Nginx 作为中间层,将客户端请求转发到后端服务器,并将响应返回给客户端。
- 负载均衡:Nginx 将请求均匀分配到多个后端服务器,以提高系统性能和可用性。
- 动静分离:Nginx 直接提供静态内容,将动态内容转发到后端应用服务器,从而优化性能。
通过以上配置,Nginx 可以有效地管理和优化 Web 应用程序的流量,并与CDN加速策略结合,使用CDN的标准能力分区域回源,使用SNAT限制访问,建设ovs内网通道,使用双活方案等,确保系统的安全性、稳定性和高性能。