用dw制作购物网站首页,外贸网站搭建推广,沈阳最新通告,敦煌做网站的公司电话1 http 块配置
Nginx 的配置分为多个块#xff0c;其中 http 块是其中的主要部分#xff0c;包含了 http 的相关配置。
http 块主要可以设置以下参数#xff1a;
include#xff1a;可以引入其他配置文件。例如#xff0c;include /etc/nginx/mime.types; 表示引入了 /…1 http 块配置
Nginx 的配置分为多个块其中 http 块是其中的主要部分包含了 http 的相关配置。
http 块主要可以设置以下参数
include可以引入其他配置文件。例如include /etc/nginx/mime.types; 表示引入了 /etc/nginx/mime.types 文件其中包含了支持的文件类型。default_type: 指定默认的Content-Type当请求的资源没有明确指定Content-Type时将使用该默认类型。log_format: 定义日志格式可以自定义日志输出的格式可以使用预定义的变量来包含特定信息例如$remote_addr表示客户端IP地址$request表示请求内容等等。access_log: 配置访问日志的路径和格式。可以指定日志输出到文件也可以将日志重定向到标准输出流。error_log: 配置错误日志的路径和日志级别。可以指定日志输出到文件也可以将日志重定向到标准错误流。sendfile: 是否开启sendfile指令。当该指令开启时nginx会尝试使用sendfile系统调用来直接传输文件提高文件传输效率。tcp_nopush: 开启后允许发送TCP_NODELAY选项来减少网络传输延迟。keepalive_timeout: 配置HTTP keep-alive连接的超时时间。如果一个客户端在这个时间内没有发送新的请求连接将被关闭。gzip: 配置gzip压缩。开启后nginx会对响应的内容进行gzip压缩减少传输数据量提高性能。server: 用于配置一个虚拟主机Server Block包含了服务器的监听端口、域名、请求处理等配置。一个http块可以包含多个server块用于配置多个虚拟主机。location: 用于配置请求处理的规则。location块可以根据URL路径或正则表达式来匹配请求并指定相应的处理逻辑例如反向代理、重定向、文件处理等。upstream: 配置代理服务器的集群。upstream指令用于定义一组后端服务器并可以指定负载均衡算法来分配请求。
2 http - server 块配置
在 Nginx 的 http 配置中可以包含多个 server 配置。如下 http {# server块1server {# 该server块的配置}# server块2server {# 该server块的配置}
}其中server 块的主要参数包含
listen: 配置服务器监听的端口号和IP地址。可以通过listen指令指定多个端口号和IP地址比如listen 80;表示监听80端口默认监听所有可用IP地址。server_name: 配置服务器的域名或IP地址。可以配置多个域名用空格隔开。当请求的Host头部与server_name中的某个域名匹配时该server块将会处理该请求。add_header: 用于设置响应头信息。location: 用于配置请求处理的规则。location块可以根据URL路径或正则表达式来匹配请求并指定相应的处理逻辑例如反向代理、重定向、文件处理等。access_log和error_log: 配置访问日志和错误日志的路径和格式。try_files: 配置文件搜索顺序。当请求的文件不存在时可以通过try_files指令指定多个备用文件服务器会按照指定的顺序查找并返回第一个存在的文件。gzip: 配置gzip压缩。开启后nginx会对响应的内容进行gzip压缩减少传输数据量提高性能。 # 定义一个HTTP服务器块监听80端口并且同时监听IPv4和IPv6地址的80端口
server {listen 80;listen [::]:80;server_name localhost;# 注释掉以下access_log配置表示不记录访问日志#access_log /var/log/nginx/host.access.log main;# 配置根目录和默认的索引文件location / {root /usr/share/nginx/html;index index.html index.htm;}# 注释掉以下error_page配置表示不自定义错误页#error_page 404 /404.html;# 配置5xx错误码的错误页error_page 500 502 503 504 /50x.html;location /50x.html {root /usr/share/nginx/html;}
}
该配置定义了一个名为 localhost 的 server监听本机 80 端口。
3 http - server - location 配置
location 配置是Nginx中用来匹配请求URIUniform Resource Identifier并指定如何处理请求的指令。在Nginx配置文件中location 块用于根据不同的 URI 路径来定义不同的行为如代理请求、重定向、设置缓存等。
配置类型
location 块有不同的匹配类型
普通匹配使用前缀匹配或完全匹配来匹配请求URI。 例如 location /example匹配以/example开头的URI路径。精准匹配。 例如 location /path/to/resource只有当请求的URI完全等于 /path/to/resource 时该 location 块才会生效。~正则表达式匹配。 例如 location ~ ^/images/.*\.jpg$匹配以 /images/ 开头且以 .jpg 结尾的URI路径。~*不区分大小写的正则表达式匹配。 例如 location ~* \.jpg$会匹配以 .jpg 结尾的URI不区分大小写。^~优先匹配。 例如 location ^~ /static/匹配以 /static/ 开头的URI路径该匹配的优先级高于其他匹配。
配置块参数
location 配置块中可以配置一些参数常见的如下
root指定location块的根目录用于确定请求资源的实际文件路径。例如root /usr/share/nginx/html;alias类似于root但是可以将URI路径替换为指定的路径不包括location路径。例如alias /path/to/files;try_files定义尝试查找文件的顺序用于处理静态文件请求。例如try_files $uri $uri/ /index.html;proxy_pass将请求代理到指定的后端服务。例如proxy_pass http://backend_server;rewrite重写URI可用于重定向或修改请求URI。例如rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;auth_basic启用基本的HTTP身份验证。例如auth_basic Restricted Area;if条件判断根据条件执行不同的指令。注意if指令有一些限制和陷阱建议谨慎使用。limit_rate限制请求速率用于限制客户端访问速度。例如limit_rate 100k;expires设置缓存过期时间用于控制静态资源的缓存时间。例如expires 1d;add_header添加自定义HTTP响应头。例如add_header X-MyHeader My Custom Header;proxy_set_header设置代理请求头。例如proxy_set_header X-Real-IP $remote_addr;proxy_redirect修改代理请求的重定向头。例如proxy_redirect off;proxy_pass_header设置代理响应的头信息。例如proxy_pass_header Server;
下面是一个简单的Nginx配置示例
# 定义一个HTTP服务器块监听80端口并且设置主机名为example.com
server {listen 80; # 监听80端口server_name example.com; # 设置主机名为example.com# 处理请求根路径的配置location / {root /usr/share/nginx/html; # 设置根目录为/usr/share/nginx/htmlindex index.html; # 设置默认的索引文件为index.html}# 处理以/images/开头的请求路径location /images/ {alias /var/www/images/; # 将URI路径替换为/var/www/images/}# 处理以/api/开头且以.json结尾的请求路径location ~ ^/api/.*\.json$ {proxy_pass http://backend_server; # 将请求代理到后端服务器backend_server}
}
4 http - server - upstream 配置
upstream 块用于定义一组后端服务器用于负载均衡或代理请求。 例如
upstream my_backend {server backend_server1:8000; # 定义第一个后端服务器格式为 server [IP或域名]:端口server backend_server2:8000; # 定义第二个后端服务器可以配置多个服务器server unix:/tmp/backend.sock; # 也可以使用Unix Socket代替IP和端口weight1; # 设置服务器的权重默认为1负载均衡时会根据权重分配请求max_fails3; # 设置请求失败次数的阈值默认为1超过阈值后服务器被认为不可用fail_timeout10s; # 设置服务器的失败超时时间默认为10秒backup; # 设置服务器为备份服务器在其他服务器不可用时使用down; # 设置服务器为暂时不可用状态不会分配请求给该服务器
}
在 upstream 块中可以配置多个后端服务器Nginx 会根据负载均衡算法将请求分发给这些后端服务器。 需要注意的是如果是在 Docker 中运行的 Nginx则这里的 server 字段可以配置为 容器名称:端口号如 ixiaoniu:8080。
在定义了 upstream 块后便可以在 location 块中通过 proxy_pass 指令将请求代理到定义的 upstream 块中的后端服务器
location / {proxy_pass http://my_backend; # 将请求代理到名为 my_backend 的 upstream 块中定义的后端服务器}
3. 一些常用命令
docker exec -it nginx bash进入在 Docker 中运行的 Nginx 容器命令行。nginx -v显示 Nginx 版本。nginx -t测试 Nginx 配置文件是否有错误。nginx -s reload重新加载配置。 自己的案例 1. 目录结构
[rootk8s-worker07-59 nginx]# pwd
/opt/nginx
[rootk8s-worker07-59 nginx]# tree
.
├── back
│ ├── conf.d
│ │ └── default.conf
│ └── nginx.conf
├── conf.d
│ └── server
│ ├── jettech
│ │ ├── jettech-server.conf
│ │ └── location
│ │ └── index.conf
│ └── nexus
│ ├── location
│ │ └── index.conf
│ └── nexus-server.conf
├── logs
│ ├── access.log
│ └── error.log
└── nginx.conf9 directories, 9 files
2. 配置文件
[rootk8s-worker07-59 nginx]# ls
back conf.d logs nginx.conf[rootk8s-worker07-59 nginx]# cat nginx.conf
user root;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {worker_connections 10240;
}
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;keepalive_timeout 65;#include /etc/nginx/conf.d/server/*/*.conf;include conf.d/server/*/*.conf;
}[rootk8s-worker07-59 nginx]# ls conf.d/server/jettech/
jettech-server.conf location
[rootk8s-worker07-59 nginx]# cat conf.d/server/jettech/jettech-server.conf
server {listen 80;server_name localhost;error_page 500 502 503 504 /50x.html;location /50x.html {root /usr/share/nginx/html;}#include /etc/nginx/conf.d/server/jettech/location/*.conf;include conf.d/server/jettech/location/*.conf;
}[rootk8s-worker07-59 nginx]# cat conf.d/server/jettech/location/index.conf
location / {root /usr/share/nginx/html;index index.html index.htm;
} [rootk8s-worker07-59 nginx]# docker run --name wubo --privilegedtrue -p 9000:80 -p 9001:8080 -p 9002:8081 -it -v /opt/nginx/conf.d:/etc/nginx/conf.d -v /opt/nginx/nginx.conf:/etc/nginx/nginx.conf -v /opt/nginx/logs:/var/log/nginx -v /etc/localtime:/etc/localtime -d harbor.jettech.com/jettechtools/nginx:1.21.4