nginx.conf配置文件详解


#nginx配置文件主要分为六个区域:
#main(全局设置)、events(nginx工作模式)、http(http设置)、
#sever(主机设置)、location(URL匹配)、upstream(负载均衡服务器设置)。


#来指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。
#user nobody;

#worker_processes来指定了Nginx要开启的子进程数。
#每个Nginx进程平均耗费10M~12M内存。
#根据经验,一般指定1个进程就足够了,如果是多核CPU,建议指定和CPU的数量一样的进程数即可。
#我这里写2,那么就会开启2个子进程,总共3个进程。
worker_processes 2;

#error_log用来定义全局错误日志文件。
#日志输出级别有debug、info、notice、warn、error、crit可供选择.
#其中,debug输出日志最为最详细,而crit输出日志最少。
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log /etc/nginx/logs/nginx_error.log info;

#pid用来指定进程id的存储文件位置
pid /etc/nginx/nginx.pid;

#worker_rlimit_nofile用于指定一个nginx进程可以打开的最多文件描述符数目.
#这里是65535,需要使用命令“ulimit -n 65535”来设置。
worker_rlimit_nofile 65535;

#events模块来用指定nginx的工作模式及连接数上限
events {
#use用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。
#其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,
#不同的是epoll用在Linux平台上,而kqueue用在BSD系统中,
#因为Mac基于BSD,所以Mac也得用这个模式,对于Linux系统,epoll工作模式是首选
use epoll;

#worker_connections用于定义Nginx每个进程的最大连接数,即接收前端的最大请求数,默认是1024。
#最大客户端连接数由worker_processes和worker_connections决定,即Max_clients=worker_processes*worker_connections.
#在作为反向代理时,Max_clients变为:Max_clients = worker_processes * worker_connections/4。
#进程的最大连接数受Linux系统进程的最大打开文件数限制,
#在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效。
worker_connections 65535;
}


#http模块可以说是最核心的模块了,它负责HTTP服务器相关属性的配置,
#它里面的server和upstream子模块,至关重要,等到反向代理和负载均衡以及虚拟目录等会仔细说
http {
#include 来用设定文件的mime类型,类型在配置文件目录下的mime.type文件定义,来告诉nginx来识别文件类型
include mime.types;

#default_type设定了默认的类型为二进制流,也就是当文件类型未定义时使用这种方式,
#例如在没有配置asp 的locate 环境时,Nginx是不予解析的,此时,用浏览器访问asp文件就会出现下载了。
default_type application/octet-stream;

#log_format用于设置日志的格式,和记录哪些参数,这里设置为main,刚好用于access_log来纪录这种类型。
#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参数用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞。
sendfile on;
#tcp_nopush on;

#keepalive_timeout设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接
keepalive_timeout 65;

gzip on;

#upstream 模块负债负载均衡模块,通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡
upstream appServer{
#Nginx的负载均衡模块目前支持4种调度算法:
#weight 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,
#如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。
#weight指定轮询权值,weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。

#ip_hash:每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。

#fair:比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间
#长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,
#响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。

#url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。
#Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。

#ip_hash;
server 127.0.0.1:9290;
server 10.25.21.52:9290;
}

#sever 模块是http的子模块,它用来定一个虚拟主机
server
{
#listen用于指定虚拟主机的服务端口,这是http的接口,不是https的接口
listen 9380;

#server_name用来指定IP地址或者域名,多个域名之间用空格分开
server_name localhost;

#charset用于设置网页的默认编码格式
#charset koi8-r;

#access_log logs/host.access.log main;

#location模块是nginx中用的最多的,也是最重要的模块了,什么负载均衡啊、反向代理啊、虚拟域名啊都与它相关
location / {
#root指令用于指定访问根目录时,虚拟主机的web目录,这个目录可以是相对路径(相对路径是相对于nginx的安装目录)。也可以是绝对路径。
root html;

#index用于设定我们只输入域名后访问的默认首页地址,有个先后顺序:index.php index.html index.htm,
#如果没有开启目录浏览权限,又找不到这些默认首页,就会报403错误。
index index.html index.htm;
proxy_pass http://appServer;
proxy_set_header X-Real-IP $remote_addr;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#获取真正的访问地址
proxy_set_header Host $Host:9380;
}

#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;
}
}

}

posted @ 2018-11-20 10:54  马明YUE  阅读(204)  评论(0)    收藏  举报