nginx.config详细介绍

本文详细介绍了nginx配置文件的三大主要部分:全局块、events块和http块。全局块涉及用户信息、工作进程设置及错误日志配置。events块关注网络连接的序列化和最大连接数。http块则包含http全局块、server块和upstream块,用于配置虚拟主机、请求路由和负载均衡等高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分为三大块:全局块、events块(网络相关配置)、http块(请求资源相关配置)

全局块

user nginx;//设置一个用户信息 默认的是nginx

在这里插入图片描述

useradd nginx;添加一个用户信息

master_process 用来指定是否开启工作进程(默认是on,开启)

worker_process 用来nginx生成工作进程的数量 (num/auto)

daemon 是否以守护进程的方式启动 (on|off 默认是on)

pid文件存放当前运行进程的主进程号(默认是pid /run/nginx.pid; 可以通过.configure --pid-path=[path]来指定)

配置全局错误日志的存放路径 - error_log 日志级别由低到高为debug,info,notice,warn,error,crit,alert,emerg

error_log file | stderr [level]; file日志存放的文件路径和文件名称 stderr 输出到标准错误 level 日志级别

include 将其他Nginx配置或者第三方模块的配置引入到当前的主配置文件中 include file;

events块

accept_mutex 当设置为t开启时,将会对多个Nginx进程接收连接进行序列化,防止多个进程对连接的争夺。

accept_mutex on | off;(默认是on)

multi_accept 当开启时,每个worker process都将同时接收多个新到达的网络连接。

multi_accept on | off; (默认是off)

use 强制Nginx服务器选择某种事件驱动模型进行消息处理。

use method; method类型:select、poll、kqueue、epoll、rtsig、/dev/poll、eventport

worker_connections 允许每一个worker process 同时开启的最大连接数。

worker_connections number; number 默认值为1024

http块

http配置块包括http-全局块、http-server块、upstream 块儿。可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。

http-全局块

mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等

http {
      #设定mime类型,类型由mime.type文件定义
      include    mime.types;
      #默认文件类型
      default_type application/octet-stream; 

      #设定日志格式(自定义)
      log_format ownformat '$remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent "$http_referer" '
                   '"$http_user_agent" "$http_x_forwarded_for"';
      access_log  /home/nginx/log/http_access.log ownformat;
                   
      #对于普通应用,设为on可以减少文件拷贝次数,如果图片显示不正常把这个改成off。
      sendfile     on;	      #off模式拷贝路径:硬盘—>内核fs缓冲区—>用户空间—>内核socket缓冲区—>协议引擎
			      # on模式拷贝路径1: 硬盘—>内核fs缓冲区—>内核socket缓冲区—>协议引擎
			      # on模式拷贝路径2: 硬盘—>内核fs缓冲区—>协议引擎
						
      tcp_nopush on	      #在linux/Unix系统中优化tcp数据传输,仅在sendfile开启时有效
      #tcp_nodelay on;	      #TCP_NODELAY选项来禁用Nagle的缓冲算法,并在数据可用时立即发送与tcp_nopush互斥

	
      keepalive_timeout 120; 		#长连接超时时间,单位是秒
      keepalive_requests number 100 #设置一个Keep-alive连接的使用次数
      send_timeout 30;			#指定客户端的响应超时时间
	
	
      gzip on;			      #开启gzip压缩输出
      gzip_http_version 1.0; 	      #压缩版本
      gzip_comp_level 2;	      #压缩级别,1-10,数字越大压缩的越好
      gzip_min_length 1k;	      #设置允许压缩的页面最小字节数
      gzip_types text/plain application/x-javascript text/css application/xml;  #压缩类型
      gzip_disable "MSIE [1-6].";      #IE6及以下禁止压缩
}

#日志格式(自定义)
        #$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
        #$remote_user:用来记录客户端用户名称;
        #$time_local: 用来记录访问时间与时区;
        #$request: 用来记录请求的url与http协议;
        #$status: 用来记录请求状态;成功是200,
        #$body_bytes_sent :记录发送给客户端文件主体内容大小;
        #$http_referer:用来记录从那个页面链接访问过来的;
        #$http_user_agent:记录客户浏览器的相关信息;
 #通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
  

http-server块

配置虚拟主机的相关参数,包含server全局块和location块

1、server块

server {
        listen 80;			#描述虚拟主机接受连接的地址和端口
        server_name localhost;          #内网:主机名,外网:域名 可以是多个域名,用空格隔开
        access_log   /home/nginx/log/server_localhost_access.log ownformat;
        index index.html index.htm index.jsp;         #默认访问主页
	root /nginx/www/webapps; 	              #主目录
}
	

server {
    listen      192.168.1.101:8080;		# 监听具体IP和具体端口上的连接
    ...
}

server {
    listen      80;						
    server_name example.com www.example.com;	#基于域名的虚拟主机(server_name)
}

server {
    listen      80;						
    server_name example.com www.example.com;	#基于域名的虚拟主机(server_name)
}

server {
    listen      192.168.1.1:80;
    server_name example.net www.example.net;	#基于域名和IP混合的虚拟主机
}

#nginx支持三种类型的虚拟主机配置
#- 基于ip的虚拟主机(一块物理服务器绑定多个ip地址)
#- 基于域名的虚拟主机(server_name/)
#- 基于端口的虚拟主机(listen不写ip,端口模式)

2、location块

为具体的请求URI配置请求路由,可以实现默认主页、错误提示页面、静态文件处理、反向代理等功能

location = / {			#注意URL最好为具体路径。 uri严格匹配指定的路径,不包括子路径
    [ configuration A ]
}

location / {			#对当前路径及子路径下的所有对象都生效;
    [ configuration B ]
}

location ~ URI {} {		#~区分字符大小写
    [ configuration C ]
}

location ^~ /images/ {	#禁用正则表达式
    [ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {	#~*不区分字符大小写
    [ configuration E ]
}

#默认请求
location / {
#定义首页索引文件的名称
index index.php index.html index.htm;   
}

# 定义错误提示页面
error_page   500 502 503 504 /50x.html;
  location = /50x.html {
}
error_page   400 402 403 404 /40x.html;
  location = /40x.html {
}

#静态文件,nginx自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
    #过期30天,静态文件不怎么更新,过期可以设大一点,
    expires 30d;
}

#所有jsp的页面均交由tomcat或weblogic处理
location ~ .(jsp|jspx|do)?$ {
	#指向weblogic服务器
 	proxy_pass http://127.0.0.1:700;
    #将主机跟真实IP写入HTTP头中
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

3、upstream 块儿

#upstream可以实现负载均衡
upstream httpds {
    server 127.0.0.1:8050       weight=10 down;
    server 127.0.0.1:8060       weight=1;
    server 127.0.0.1:8060       weight=1 backup;
}
#- down:表示当前的server暂时不参与负载 
#- weight:默认为1.weight越大,负载的权重就越大。 
#- backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。

#负载均衡算法:
#1、轮询(默认)
#每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

#2、weight
#指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

#3、ip_hash
#每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

#4、fair(第三方)
#按后端服务器的响应时间来分配请求,响应时间短的优先分配。

#5、url_hash(第三方)
#按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
### 正确配置 Nginx 的 `nginx.conf` 文件 #### 全局块设置 全局块位于文件最上方,主要影响整个 Nginx 进程的行为。可以在此处指定进程数、用户权限等参数[^1]。 ```nginx user nobody; worker_processes auto; error_log logs/error.log warn; pid logs/nginx.pid; ``` #### Events 块优化 Events 坝负责处理网络连接事件模型的选择和工作线程的最大并发连接数设定。通常情况下,默认配置已经能够满足大多数需求,但对于高负载环境可能需要进一步调优。 ```nginx events { use epoll; # 使用epoll模式提高性能 worker_connections 1024; } ``` #### HTTP 块核心配置 HTTP 块是最重要的部分之一,在此定义虚拟主机、反向代理、缓存策略以及其他高级特性。对于特定域名的服务配置应当放置于 server {} 中[^5]。 ```nginx http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; gzip on; server { listen 80; server_name www.example.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # 对应具体路径映射示例 location /products/pageManage { proxy_pass http://backend_server_address/; } } } ``` 当遇到 `.swp` 文件冲突时,可能是由于上次编辑未正常退出造成临时交换文件残留所致。解决方法是在启动 Vim 后按照提示输入相应指令恢复或者删除该`.swp`文件再重新打开目标文件进行修改[^2]。 在 Docker 容器内部署并挂载自定义的 `nginx.conf` 到容器内的 `/etc/nginx/` 路径下可实现灵活管理不同项目的 Nginx 设置而不必每次都重建镜像[^3]。 通过上述指导,可以根据实际应用场景调整各个板块的内容来构建适合业务逻辑的 Nginx 配置方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值