Nginx 配置文件通常包含多个上下文(context),它们按照特定的层次结构排列。主要的上下文包括:
反向代理如何配置:http://t.csdnimg.cn/8OzCk
全局块 (nginx.conf 全局配置文件):
包含影响整个 Nginx 服务器运行的基本配置,例如工作进程数、错误日志路径等。
events 块:
定义处理连接事件的方法,如网络连接的处理模型。
http 块:
这是 Nginx 处理 HTTP 和 HTTPS 请求的主要上下文。
在 http 块内可以有 server 块、upstream 块、以及定义各种HTTP模块参数的配置项。
server 块:
代表一个独立的虚拟主机或者服务实例,通过 listen 指令监听指定的 IP 地址和端口,或通过 server_name 指令匹配请求的域名。
在 server 块中,可以进一步配置 location 块和其他与该虚拟主机相关的设置。
location 块:
用于更细致地根据请求的 URL 路径来处理不同的请求。
支持精确匹配、前缀匹配、正则表达式匹配等方式,并且具有优先级顺序。
Server 下的配置示例
server {
listen 80; # 监听所有IPv4地址上的80端口
server_name example.com www.example.com; # 匹配请求的域名
# 根目录配置
root /var/www/example;
index index.html index.htm;
# 日志配置
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
# SSL 配置(如果启用HTTPS)
# listen 443 ssl;
# ssl_certificate /path/to/cert.pem;
# ssl_certificate_key /path/to/key.pem;
# location 示例
location / {
try_files $uri $uri/ /index.html; # 如果请求的是目录,则返回/index.html
}
location /api {
proxy_pass http://backend_server:8080; # 将/api开头的请求转发到后端应用服务器
include proxy_params; # 可能包含代理相关配置的外部文件
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # PHP-FPM 的 socket 或者 TCP 端口
fastcgi_index index.php;
include fastcgi_params; # PHP 参数配置
}
}
Location 后的语法详解
精确匹配:使用等号 = 来精确匹配某个 URL 路径,具有最高优先级。
location = /exact/path {
# ...
}
前缀匹配:简单写法 location /prefix/ {},将匹配以 /prefix/ 开头的任何请求
location /images/ {
alias /data/images/;
}
正则表达式匹配:在字符串前添加 ~ 表示区分大小写的正则表达式匹配,添加 ~* 则表示不区分大小写的正则表达式匹配。
location ~ ^/regex-match/ {
rewrite ^(.*)$ /new-path permanent;
}
通用匹配:若没有指定匹配类型,默认为前缀匹配,且当其他匹配规则都不满足时作为最后的备选。
location / {
# 默认的处理逻辑
}
此外,在 location 块内部,可以设置诸如重定向、反向代理、内容处理(如FastCGI)等多种操作