###背景一直在使用nginx作为服务器,但是一直不知道其原理,从来都是复制粘贴,今天看到一篇文章不错,整理了一下,作为入门吧,主要只是说配置文件的###配置文件一般nginx安装好了以后,会有一个总
###背景一直在使用nginx作为服务器,但是一直不知道其原理,从来都是复制粘贴,今天看到一篇文章不错,整理了一下,作为入门吧,主要只是说配置文件的
###配置文件
一般nginx安装好了以后,会有一个总的配置文件,我的是在nginx
里面是这样的
user root owner;worker_processes 1;error_log /usr/local/var/logs/nginx/error.log debug;pid /usr/local/var/run/nginx.pid;events { worker_connections 256;}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" $host $request_time $upstream_response_time $scheme ' '$cookie_evalogin'; access_log /usr/local/var/logs/access.log main; sendfile on; keepalive_timeout 65; port_in_redirect off; include /usr/local/etc/nginx/sites-enabled/*; }
其实nginx主要的核心功能,就是,解析一个url,去响应这个url是做什么的,即定义一系列的虚拟服务器(Virtual Servers)控制对来自特定域名或者 IP 的请求的处理。
它是由不同的模块组成的,这些模块由配置文件中知道的指令控制,指令分为简单指令和块指令,这是什么意思呢,简单质量就是一个以;结尾的,类似上面的include main.types;这一个,有key和value,而指令块就是一堆指令的集合,用大括号({和})包围,如果指令快大括号中包含其他指令,则称改指令未上下文文,好像上面的http###静态内容Web 服务器一个重要的功能是服务静态文件(图像或静态HTML页面)。例如,Nginx 可以很方便的让服务器从/data/www 获取 html 文件,从/data/images获取图片来返回给客户端,这只需要在http块指令中的server块指令中设置两个location块指令。简单来说,就是给url定义好文件的地址,可以从url中准确分析并找到需要的文件
首先,创建 /data/www 目录,并放入 index.html,创建 /data/images 目录并在其中放置一些图片。
接下来,打开配置文件。 创建一个 server 块:
http { server { }}
通常,配置文件可以包括多个server块,它们以端口和服务器名称来区分,当nginx决定某一个server处理请求后,它将请求头中的URL金额Server块中的location块进行对比。
加入location块指令对server中:
location / { root /data/www;}
上面的 location 块指定 / 前缀与请求中的 URI 对比。对于匹配的请求,URI 将被添加到 root 指令中指定的路径,即 /data/www,以此形成本地文件系统的路径,如访问http://localhost/bog/welcome.html,对应服务器文件路径为/data/www/bog/welcome.html。 如果 URI 匹配多个 location 块,Nginx 采用最长前缀匹配原则(类似计算机网络里面的IP匹配), 上面的 location 块前缀长度为 1,因此只有当所有其他 location 块匹配时,才使用该块。