Nginx是一个高性能的HTTP和反向代理服务器,它的配置文件主要由多个块组成。本文将介绍Nginx配置文件中的常用块及其功能。
events {
worker_connections 1024; # 单个工作进程的最大连接数
}
http {
include mime.types; # 包含MIME类型文件
default_type application/octet-stream; # 默认MIME类型
sendfile on; # 开启高效文件传输模式
keepalive_timeout 65; # 长连接超时时间(秒)
gzip on; # 开启GZIP压缩
}
server {
listen 80; # 监听端口
server_name example.com; # 域名
root /var/www/example.com; # 网站根目录
index index.html index.htm; # 默认首页文件名
}
4.1 location /块
location / {
root /usr/share/nginx/html; # 网站根目录
index index.html index.htm; # 默认首页文件名
}
4.2 location ~ .php$块
location ~ \.php$ {
root /usr/share/nginx/html; # PHP脚本根目录
fastcgi_pass 127.0.0.1:9000; # PHP-FPM地址和端口
fastcgi_index index.php; # PHP-FPM默认文件名
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # PHP-FPM参数
include fastcgi_params; # 包含PHP-FPM参数文件
}
upstream backend {
server backend1.example.com weight=3; # 权重为3的后端服务器1
server backend2.example.com; # 后端服务器2,权重默认为1
}
location /api {
proxy_pass http://backend; # 将请求转发到名为backend的upstream中定义的服务器组
}
location / {
try_files $uri $uri/ =404; # 按顺序查找文件,找不到则返回404错误页面
}
首先,需要在编译Nginx时启用split_clients模块:
--with-http_split_clients_module # 在configure命令中添加该选项,然后重新编译Nginx
然后,在配置文件中使用map指令和split_clients模块:
http {
...
map $remote_addr $backend { # 根据客户端IP地址映射到后端服务器组名的变量值,例如:192.168.1.1 -> "backend1",192.168.1.2 -> "backend2" ... } # 根据实际需求自定义映射关系 split_clients "$backend"; # 根据上一步定义的变量值进行会话亲和性分配 ... server { ... } ... } } } } } } } } } } } } } } } } } } } } } } } } } } } } ... server { ... } ... } } } } } } } ... } } ... } ... } ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... # 根据实际需求自定义后端服务器组和相关配置信息... server { listen 80; server_name example.com; location / { root /var/www/example.com; index index.html index.htm; try_files $uri $uri/ =404; } location /api { map $backend $backend_host { default "backend1"; ~^backend[1-9]$ "backend2"; ~^backend[1-9][0-9]$ "backend3"; ~^backend[1-9][0-9][0-9]$ "backend4"; ~^backend[1-9][0-9][0-9][0-9]$ "backend5"; ~^backend[1-9][0-9][0-9][0-9][0-9]$ "backend6"; ~^backend[1-9][0-9][0-9][0-9][0-9][0-9]$ "backend7"; ~^backend[1-9][0-9][0-9][0-9][0-9][0-9][0-9]$ "backend8"; ~^backend[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$ "backend9"; } set $backend "${backend}${remote_addr}"; set $backend_host "${backend_host}:8080"; proxy_pass http://$backend_host; }}}'d
以上就是本期的全部内容!一键三连拜谢!