nginx初学指南
来源:互联网 发布:电容触摸按键编程 编辑:程序博客网 时间:2024/06/07 13:58
nginx概述:
nginx服务由一个 master进程和多个 worker进程组成,master进程主要负责读取和应用配置,以及维护 worker进程,worker进程负责实际处理请求。Nginx基于事件处理机制来高效地将请求分配给 worker进程,worker进程的数量可以在配置文件中预先定义好或者基于可用CPU数量自动调整匹配。
nginx配置文件:
- 配置文件默认路径为 /usr/local/nginx/conf/nginx.conf,或者 /etc/nginx/nginx.conf,或者 /usr/local/etc/nginx/nginx.conf
- 配置文件由指令和指令块(block)组成,单个指令有指令名和参数组成,英文分号(;)结尾。指令块由大括号({和})将多个指令包括起来,如果一个指令块中可以包含其他指令块,则称这个指令块为一个上下文(context),例如 events,http,server,location等。
如果指令没有被包括任何上下文中,则认为其在上下文 main中。events和 http的指令被放在上下文 main中,server的指令在上下文 http中,location的指令在 server中。
配置文件中通过 #来定义注释。
当 nginx进程启动后,可以通过nginx -s <signal>参数向 master进程发送信号,信号有下面几种:
- stop:快速停止 nginx进程。
- quit:同样是停止进程,但是会等待全部 worker进程处理完成当前已经收到的请求。
- reload:当 master进程收到 reload信号后,会首先检查新的配置文件的语法,如果检查通过,master进程会启动新的 worker进程,并发消息给旧的 worker进程通知其关闭,当 worker进程收到关闭通知后,会停止接收新的请求,处理完成当前处理中的请求,然后退出。如果配置文件检查没有通过,master进程会回滚配置并仍然使用原有配置工作。
- reopen:重新打开(新的)日志文件,该操作可以用于日志的分割,例如当日志积累到一定大小后,先使用 mv命令将原日志移动到新的目录下,然后使用 reopen信号告知 nginx重新打开新的日志文件用于日志记录。
nginx反向代理和负载均衡的基础配置实验:
nginx服务器我们安装在一台CentOS 7.3上面,后端两台server一台是CentOS 6.9搭建的Apache,一台用Windows Server 2012搭建的IIS。
CentOS6.9搭建Apache:
安装:yum installhttpd
启动服务:servicehttpd start
配置开机启动:chkconfighttpd on
找一个测试用的http模板网站上传到httpd默认目录/var/www/html下(在/etc/httpd/conf/httpd.conf中配置),如果需要的话,调整一下iptables。测试站点是否可以访问:
Windows Server 2012搭建IIS站点:
安装:在添加删除角色和功能(Rolesand Features)中添加Web Server (IIS)
默认安装后,找一个测试用的http模板网站上传到http默认目录C:\inetpub\wwwroot下,如果需要的话,调整一下防火墙规则。测试站点是否可以访问:
安全起见我们可以把后端这两台server的http侦听端口修改为一个高位端口,例如:61234:
CentOS 6.5上面修改/etc/httpd/conf/httpd.conf中的Listen端口,Windows IIS上面修改bind中的绑定端口。
配置好之后,开始搭建nginx:
首先添加nginx的repo,添加/etc/yum.repos.d/nginx.repo文件,写入下面的内容:
[nginx]
name=nginxrepo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
保存退出,使用yuminstall nginx安装。
安装完成后启动服务:systemctlstart nginx
设置开机启动:systemctlenable nginx
测试nginx安装是否成功:
接下来就是配置nginx配置文件了,由于nginx模块非常多,所以可以变查变学习nginx各个模块对应的配置,可以参考官网上面的说明:
http://nginx.org/en/docs/
举个例子,要配置http的配置,就可以在上面链接中找到ngx_http_core_module模块,打开对应的链接,里面会有http配置的详细指令和参数说明,如果要了解http下面的upstream模块,可以找到ngx_http_upstream_module的链接查看。
接着我们配置一个简单的负载均衡,修改/etc/nginx/nginx.conf文件内容如下:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http{
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream backend{
server 172.16.0.11:61234;
server 172.16.0.6:61234;
}
server{
listen 80;
server_name localhost;
location / {
proxy_passhttp://backend;
}
}
}
上面配置里面172.16.0.11和172.16.0.6分别是前面我们做的IIS和Apache的机器的内网地址,配置完成后使用nginx -s reload。
尝试访问一下nginx,发现提示502 Bad Gateway:
首先使用paping测试一下nginx到两台后端web服务器是否可达:
再测试一下web页面是否能够返回内容:
测试发现都没问题并且nginx的配置也正常,再查看一下nginx的errorlog:
可以看到在连接后端两台web服务器的时候报Permission denied,于是使用setenforce0将selinux关闭,再次访问发现正常了:
多测试几次看一下负载均衡是否运行正常:
测试没问题,最后把selinux配置文件修改下,大功告成:
当然,nginx能够实现的功能以及后续的优化还有很多,具体就需要各位看官实践出真知了~~
- nginx初学指南
- 初学nginx
- 初学nginx
- SSE2初学指南
- SSE2初学指南
- HTML初学指南
- Velocity初学指南1
- velocity初学指南2
- 初学MySql指南
- Struts初学指南
- Struts 初学指南
- MYSQL初学指南
- SSE2初学指南
- 初学seo速记指南
- 初学seo速记指南
- git分支初学指南
- vsFTPd 服务器初学指南
- Web开发初学指南
- AdaBoost算法源码分析
- Lucene全文检索初探
- Three.JS 发光球体,材质纹理,缩放移动动画,教程
- 厉害到颤抖!这几个网站你到现在都没用过?陛下请收好我的膝盖
- ETL安装前的准备
- nginx初学指南
- 购物车的简单使用
- IDEA 字体 编码设置
- 关联规则挖掘算法-CATS Tree(Compressed and Arranged Transaction Sequences Tree)
- NestedScrollView中嵌套ViewPager导致不能左右切换的解决方法
- 玩转APK:实现Android APK瘦身99.99%
- 动画杂谈
- ES6学习笔记-Udacity
- 深入理解Spring MVC 思想