Nginx配置规则详解,配置解释

1. Nginx配置文件(nginx.conf)

默认在Linux上安装的Nginx,配置文件在安装的nginx目录下的conf目录下,名字叫做nginx.conf

nginx.conf主要由三部分组成

全局块,events块http块配置文件结构:

自带默认配置文件

# 全局块

------------------------------------------------------------------------------

#user nobody;

worker_processes 1;

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

------------------------------------------------------------------------------

# events块

events {

worker_connections 1024;

}

# http块

http {

------------------------------------------------------------------------------# http全局块

include 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 logs/access.log main;

sendfile on;

#tcp_nopush on;

#keepalive_timeout 0;

keepalive_timeout 65;

#gzip on;

------------------------------------------------------------------------------

# server块

server {

# server全局块

listen 80;

server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

# location块

location / {

root html;

index index.html index.htm;

}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

#

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ \.php$ {

# proxy_pass http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

#location ~ \.php$ {

# root html;

# fastcgi_pass 127.0.0.1:9000;

# fastcgi_index index.php;

# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

# include fastcgi_params;

#}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

#location ~ /\.ht {

# deny all;

#}

}

# 可以配置多个server块

}

下边分别解释三个模块

1. 全局块

就是配置文件从头开始到events块之间的内容,主要设置的是影响nginx服务器整体运行的配置指令比如worker_process, 值越大,可以支持的并发处理量也越多,但是还是和服务器的硬件相关

2. events块

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。上述例子就表示每个 work process 支持的最大连接数为 1024.这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置

3. http块

包括http全局块,以及多个server块

http全局块

http 全局块配置的指令包括文件引入、 MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

server块

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机

而每个 server 块也分为全局 server 块,以及可以同时包含多个 location 块。

server全局块

最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。

#这一行表示这个server块监听的端口是80,只要有请求访问了80端口,此server块就处理请求

listen 80;

# 表示这个server块代表的虚拟主机的名字

server_name localhost;

location块

一个 server 块可以配置多个 location 块。

主要作用是根据请求地址路径的匹配,匹配成功进行特定的处理

这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

# 表示如果请求路径是/就是用这个location块进行处理

location / {

root html;

index index.html index.htm;

}

还有UpStream,这个可以用来转发TCP协议

# 在http块中的全局块中配置

# upstream固定写法 后面的myserver可以自定义

upstream myserver{

server 192.168.80.102:8081;

server 192.168.80.102:8082;

}

# server配置

server {

# 监听80端口

listen 80;

#location块

location / {

# 反向代理到上面的两台服务器 写上自定义的名称

proxy_pass http://myserver;

}

}