Nginx的一些设置
Nginx配置和使用
一:文件夹
1.1 conf文件夹
存放配置文件
1.2 html文件夹
存放默认的HTML文件
1.3 logs文件夹
存放日志文件和nginx.pid文件
1.4 sbin文件夹
存放nginx可执行文件
二:操作
2.1 启停控制
使用ps -ef | grep nginx或者cat nginx.pid可以查看nginx的pid。
使用向进程传信号的方式来控制进程:kill SIGNAL PID(可以使用的信号有TERM/INT,QUIT,HUP,USR1,USR2,WINCH)。
使用二进制文件nginx:参数-t检查服务器配置文件中是否有语法错误,可以和-c配合使输出内容更加详细,和-q配合,则如果无错误,将不输出内容。-s用来向进程发送信号。-p prefix改变安装路径,在平滑升级nginx服务器时使用。-c filename指定配置文件的路径。-g directives补充配置文件,指定全局配置。
停止:nginx -g TERM | INT | QUIT
重启:nginx -g HUP [-c filename]或者kill HUP PID
升级:nginx -p 改变安装路径(非必须)-> nginx -g USR2(平滑升级) / kill USR2 PID -> nginx -g WINCH / kill WINCH PID
2.2 基础配置
一个nginx.cnf的示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
worker_processes 1;
events {
worker_connections xxxx;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
文件开始的部分为全局块,之后是events块和http块,http块下又有server块,server块下又有location块。
- 全局块包括配置运行nginx的服务器的用户(组),worker process数,nginx进程pid存放路径,日志的存放路径和类型,配置文件的引入等。
- events块主要影响服务器和用户的链接,包括是否开启对多worker process下的网络链接进行序列化,是否允许同时接受多个网络链接,选取哪种事件驱动模型处理链接请求,每个process可以同时支持的最大链接数等。
- http块可以引入文件,定义MIME-Type,自定义日志,是否使用sendfile传送文件,设置连接超时间,设置单链接请求上限等。
- server块代表一个虚拟主机,最常见的配置是定义本虚拟主机的监听配置和本虚拟主机的名称或IP设置。
- location块的作用是基于nginx接收到的请求字符串(如server_name/uri-string),对除虚拟主机名称之外的字符串(/uri-string)进行匹配,对特定的请求进行处理,实现地址定向,数据缓存,应答控制等功能。
其他配置(全局块)
配置运行nginx服务器的用户(组):user user [group];(或者允许任何人操作:user nobody nobody)
配置允许生成的worker process数:worker_process number | auto
配置pid存放位置:pid filepath/filename
配置错误日志的存放位置:error_log file | stderr [debug|info|notice|warn|error|crit|alert|emerg](注意:指定的文件对于运行nginx的进程的用户具有读写权限)
引入其他配置文件:include file
其他配置(events块)
设置网络连接的序列化:accept_mutex on | off
设置是否允许同时接受多个网络链接:multi_accept on | off
事件驱动模型的选择:use select | poll | kqueue | epoll | rtsig | /dev/poll | eventport(只能在event中使用)
其他配置(http块)
定义MIME-Type(type块)(默认为text/plain):include mime.types; default_type application/octet-stream; (可以在http,server,location中进行设置)
自定义服务日志:access_log path[format[buffer=size]](可以在http,server,location中进行设置)
允许sendfile(可以在http,server,location中设置)
设置超时时间(keepalive_timeout):keepalive_timeout timeout[header_timeout](可以在http,server,location中进行设置)
单链接请求上限:keepalive_requests number;(可以出现在http,server和location中)
其他配置(server->listen)
配置网络监听
- 配置监听的IP:listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] \ [deferred] [accept_filter=filter] [bind] [ssl];
-
配置监听端口:listen port [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] \ [deferred] [bind] [ ipv6only=on off] [ssl]; - 配置UNIX Domain Socket(一种在原有Socket框架上发展起来的IPC机制)
基于名称的虚拟主机配置(server->server_name)
基于IP的虚拟主机配置(server->server_name)
if config eth1:0 192.168.1.31 netmask 255.255.255.0 up配置IP别名
location块
root设置网站根目录
index设置网站默认主页
error_page设置网站的错误页面
基于IP设置访问权限
allow/deny address | CIDR | all;
基于密码配置的nginx访问权限
auth_basic string | off auth_basic_user_file file
1
2
3
name1:password1
name2:password2:comment
name3:password3 > 使用htpasswd:htpasswd -c -d /nginx/conf/pass_file username
2.3 配置实例
三:代理服务
3.2 反向代理基本设置(21条)
- proxy指令:设置被代理的服务器的地址,可以是主机,IP地址加端口等
- proxy_hide_header指令:用于设置Nginx服务器在发送HTTP响应时,隐藏一些头域信息
- proxy_pass_header指令:默认情况下,Nginx服务器在发送响应报文时,报文头中不包含“Date”,“Server”,“X-Accel”等来自被代理服务器的头域信息,这个指令可以设置这些头域信息可以被发送。
- proxy_pass_request_body指令:该指令用于配置是否将客户端请求的请求体发送给代理服务器。
- proxy_pass_request_headers指令:该指令用于配置是否将客户端请求的请求头发送给代理服务器。
- proxy_set_header指令:该指令可以更改Nginx服务器收到的客户端请求的请求头信息,然后将新的请求头发送给被代理服务器。
- proxy_set_body指令:该指令可以更改Nginx服务器接收到的客户端请求的请求体信息,然后将新的请求体发送给被代理服务器。
- proxy_bind指令:强制将与代理服务器的连接绑定到指定的IP地址。
- proxy_connect_timeout指令:该指令配置Nginx服务器与后端被代理服务器尝试建立连接的超时时间。
- proxy_read_timeout指令:该指令设置Nginx服务器向后端被代理服务器发出read请求后,等待响应的超时时间。
Nginx支持多种类型虚拟主机:基于IP的,基于域名的和基于端口的。
基于IP的虚拟主机是在一块网卡上设置多个IP别名。
基于域名的虚拟主机需要配置DNS服务器,将每个主机名映射到正确的IP地址,配置Nginx,让其识别不同的主机名。这使得很多虚拟主机可以共享同一个IP地址。 基于端口的虚拟主机