nginx 基础学习篇
2018-03-13 10:28
155 查看
Nginx基础篇
翻译了官网nginx基础篇章的英文, 应该说对初学者非常有帮助nginx基本命令
向nginx发送信号:nginx -s [signal]
signal有以下几种:
1. stop: 快速关闭nginx服务器
2. quit: 等nginx处理完当前请求,关闭服务器。(执行该命令的人必须是启动nginx的用户)
3. reload: 使nginx重新加载配置,当nginx服务器接收到这个命令是,回去检测配置的正确。如果正确,主进程则加载新配置创建新的工作进程,并通知旧进程关闭。
4. reopen: 重开日志文件
nginx配置
配置结构
nginx配置文件由指令和指令块组成:指令: 一个简单的指令由 命令和参数 组成。指令的命令和参数使用空格隔开,使用分号结尾。
指令块: 一个指令块包含很多简单的指令。同时,指令块不再使用分号结尾,而是使用大括号{和}包裹起来。
关系: 指令块内包含很多指令,指令块通常被称为环境(例如: events, http, server, location[定位]等环境), 放置在环境之外的指令被认为是位于主环境中的,events环境和http环境也是放置在主环境中的,而server环境放置在http环境里面,location环境放置在server环境里面。
配置文件中,使用 `#` 号键注释。
server环境:
在配置文件中添加一个server配置便代表一个服务功能,或说服务器。该服务器有特定的监听端口,名称。多个server环境互不影响。一个Nginx服务器中可以配置多个服务器,例如:1.1 静态服务器,用于html静态网页的浏览。
1.2 代理服务器,用于转发请求至其他服务器,并将响应回传给客户端。
1.3 邮件服务器,用于转发邮件。
例如:
#主环境 simple_directives1 params1; #简单指令 simple_directives2 params2; #简单指令 simple_directives3 params3; #简单指令 http { #http环境 server { #server环境 location { #location环境 simple_directives4 params4; #简单指令 simple_directives5 params5; #简单指令 simple_directives6 params6; #简单指令 } } } events { #events环境 }
静态服务器环境配置
对外提供的文件(例如:图片,html静态网页,css样式表, js脚本等文件)的网站服务器是nginx中非常重要的一部分。下面进行一个实验,根据请求,访问放置在本地目录/data/www/和/data/images下的文件。
这个实验将编辑nginx的配置文件/etc/nginx/nginx.conf,并设置http环境内的server环境的location环境:
首先创建/data/www和/data/images目录,放一个index.html文件到/var/www目录,放一些图片到/data/images目录下。
打开默认配置文件/etc/nginx.conf。默认配置文件已经包含很多被注释的server环境的例子。把所有类似于下面的环境都注释掉,并添加一个如下所示的新的环境:
http { server { } }
3. 通常来说,一个配置文件可能包含多个server块,这些server块由监听端口port和名称servername区分开来。一旦nginx决定哪个server块处理请求,它会根据server中定义的location块的参数测试uri。所以在上面定义的http->server块中添加localtion块。如下所示:
location / { root /data/www; }
这个location块指定”/”前缀和请求中的URI进行比较。
当匹配到时,URI就会被添加到root指令的值后面,形成的路径将请求本地文件系统上的文件。
如果有多个匹配的location块,nginx选择一个最长的前缀。
上面的例子中的前缀最短,长度只有1,所以只有在找不到任何location匹配的时候才会使用这个location。
添加第二个location块
location /images/ { root /data; }
这个location(定位)块将匹配URI请求中的 /images/(这个URI同样匹配 [location /]块, 但是这个请求太短了)。
最终的配置为:
http {
server {
# /data/www
location / { root /data/www; }
# /data/images
location /images/ {
root /data;
}
}
}
这是一个已经可以正常运行的配置。该配置下的nginx服务器监听端口80,可以通过http://localhost/ 访问本地的/data/www/目录下的index.html文件。
重新加载配置:
nginx -s reload
提示:当nginx没有按预期执行,可以尝试在/user/local/nginx/logs/或者/var/log/nginx/目录下的access.log
和error.log中文件中查找原因
建立一个简单的代理服务器
nginx服务器最频繁使用的功能之一是代理服务。这表示当nginx服务器接受到一个请求时,会将请求传递给代理服务器后,获取代理服务器的响应,并回送给客户端。
接下来我们给Nginx配置一个最简单的代理服务。该配置下的nginx提供图片或者文件的请求的
服务,将其他请求发送给代理服务器。下面这个例子中,两个服务都定义在一个Nginx服务器上。
配置一个服务器。
server { listen 8080; root /data/upl; location / { } }
这个server环境配置了一个监听8080端口,并将所有请求映射到本地目录/data/upl下的服务器。
注意:这个root指令并不在location中。当server环境下的location被选中为一个请求服务,
并且这个location并不包含自己的root指令时,使用server环境中的root代替。
2. 创建/data/upl目录,并在其中放置一个index.html文件。
3. 使用上一节中的服务器配置,修改并添加下面的配置,使其成为代理服务器配置。
server { location / { proxy_pass http://localhost:8080 } location /images/ { root /data; } }
接下来我们修改上面server环境中的第二个location配置。当前,这个location配置映射请求中的 /images/ 前缀为 /data/images/ 目录。现在我们修改它,使他匹配 一个请求各类图片(后缀名不同)的请求。
location ~ \.(gif|jpg|png)$ { root /data/images; }
这个location环境的参数是一个匹配所有以 .git, .jpg 或 .png 结尾的URI表达式。
正则表达式应该领先于 ~ 符号。对应的请求将被映射到 /data/images/ 目录。
当nginx选择一个location环境服务一个请求时,它首先检查所有location环境的指定前缀,
记住其中最长的前缀,并使用正则表达式检验请求是否和前缀匹配。
如果匹配,nginx将选择这个location环境,否则nginx将选择上一个记住的location环境,以此循环。
直到寻找到匹配的Location环境。
代理服务的最终配置如下所示:
server { location / { proxy_pass http://localhost:8080; } location ~ \.(gif|jpg|png)$ { root /data/images; } }
这个服务将会过滤所有以 .gif, .jpg 或 .png 结尾的请求,将其映射到目录 /data/images/ 目录下。并将所有其他的请求转送到上面配置的代理服务器。
nginx -s reload 重新加载配置
还有更多的用于配置代理链接的指令
设置 FastCGI proxy
nginx可用来将请求发送到FastCGI服务器,FastCGI服务器是由各种编程语言(PHP)和框架构建的运行程序。几乎所有配置了FastCGI服务器的nginx配置都使用fastcgi_pass指令代替proxy_pass指令,
并且fastcgi_pass指令设置了发送到FastCGI服务的参数。
假设FastCGI服务器可以通过localhost:9000访问。
以上一节的配置为基础,将proxy_pass指令替换为fastcgi_pass指令,并将参数改为 localhost:9000。
在PHP中,SCRIPT_FILENAME参数用于确定脚本的名称,而QUERY_STRING
参数用于传递请求参数。最终的配置:
http { server { location / { fastcgi_pass localhost:9000; fastcgi_pass SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass QUERY_STRING $query_string; } location ~ \.(git|png|jpg) { root /data/images; } } }
这个配置将建立一个FastCGI服务。这个服务器将通过FastCGI协议发送除了与/images/匹配的
所有之外的所有请求到localhost:9000。
vimwiki静态文件部署
修改配置文件如下所示
http { # js文件识别 include /etc/nginx/mime.types; server { listen 8080; location / { root /home/suchp/suchp_familly/yum/log/vimwiki/html; } location /suchptemplate/ { root /home/suchp/suchp_familly/yum/log/vimwiki; } } server { # 默认80端口 location / { proxy_pass http://localhost:8080; } location /images/ { root /home/suchp/suchp_familly/yum/log/vimwiki; } } } events { ▸ worker_connections 768; ▸ # multi_accept on; }
相关文章推荐
- Nginx-基础配置
- Linux 基础学习篇7
- Nginx基础配置
- Nginx服务基础到架构优化详解--常用25条
- 手把手教你nginx基础安装配置
- Nginx配置基础-proxy_pass
- Nginx配置基础-概述
- 2011新人-Java基础学习篇
- Nginx基础详解,内涵案例分析
- 企业级nginx基础、负载、读写分离技术
- 鸟哥的Linux私房菜 基础学习篇 第三版 第十二章 正则表达式与文件格式化处理 12.4.2 awk 好用的数据处理工具
- JAVA基础学习篇----综合总结必看
- nginx基础
- Nginx系列4之基础配置
- linux基础之nginx和nfs服务
- nginx学习笔记(2):nginx基础概念之connection
- Nginx基础入门之nginx网络连接配置项说明
- nginx基础http协议
- NGINX基础笔记