文章

Nginx的一些设置

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块。

  1. 全局块包括配置运行nginx的服务器的用户(组),worker process数,nginx进程pid存放路径,日志的存放路径和类型,配置文件的引入等。
  2. events块主要影响服务器和用户的链接,包括是否开启对多worker process下的网络链接进行序列化,是否允许同时接受多个网络链接,选取哪种事件驱动模型处理链接请求,每个process可以同时支持的最大链接数等。
  3. http块可以引入文件,定义MIME-Type,自定义日志,是否使用sendfile传送文件,设置连接超时间,设置单链接请求上限等。
  4. server块代表一个虚拟主机,最常见的配置是定义本虚拟主机的监听配置和本虚拟主机的名称或IP设置。
  5. 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)

配置网络监听

  1. 配置监听的IP:listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] \ [deferred] [accept_filter=filter] [bind] [ssl];
  2. 配置监听端口:listen port [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] \ [deferred] [bind] [ ipv6only=on off] [ssl];
  3. 配置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条)

  1. proxy指令:设置被代理的服务器的地址,可以是主机,IP地址加端口等
  2. proxy_hide_header指令:用于设置Nginx服务器在发送HTTP响应时,隐藏一些头域信息
  3. proxy_pass_header指令:默认情况下,Nginx服务器在发送响应报文时,报文头中不包含“Date”,“Server”,“X-Accel”等来自被代理服务器的头域信息,这个指令可以设置这些头域信息可以被发送。
  4. proxy_pass_request_body指令:该指令用于配置是否将客户端请求的请求体发送给代理服务器。
  5. proxy_pass_request_headers指令:该指令用于配置是否将客户端请求的请求头发送给代理服务器。
  6. proxy_set_header指令:该指令可以更改Nginx服务器收到的客户端请求的请求头信息,然后将新的请求头发送给被代理服务器。
  7. proxy_set_body指令:该指令可以更改Nginx服务器接收到的客户端请求的请求体信息,然后将新的请求体发送给被代理服务器。
  8. proxy_bind指令:强制将与代理服务器的连接绑定到指定的IP地址。
  9. proxy_connect_timeout指令:该指令配置Nginx服务器与后端被代理服务器尝试建立连接的超时时间。
  10. proxy_read_timeout指令:该指令设置Nginx服务器向后端被代理服务器发出read请求后,等待响应的超时时间。

    Nginx支持多种类型虚拟主机:基于IP的,基于域名的和基于端口的。
    基于IP的虚拟主机是在一块网卡上设置多个IP别名。
    基于域名的虚拟主机需要配置DNS服务器,将每个主机名映射到正确的IP地址,配置Nginx,让其识别不同的主机名。这使得很多虚拟主机可以共享同一个IP地址。 基于端口的虚拟主机

本文由作者按照 CC BY 4.0 进行授权

热门标签