一、差异对比
Apache Nginx
配置相对复杂 配置相对简单
原生支持动态和静态页面 支持静态页面
模块相对安全 高性能模块出产迅速、社区活跃
BUG相对较少,消耗资源较多 BUG相对较多,节省资源
对加密支持较好 对反向代理支持较好
同步阻塞型应用 异步非阻塞型应用
运用的函数:select 运用的函数:epoll
源码包nginx的配置文件位置/usr/local/nginx/conf/nginx.conf
二、配置文件详解
丄指定运行的身份是谁
丄指定同时有几个子进程运行,同时可以处理几个任务,cpu的一个线程,就代表可以同时处理一个任务。
丄日志已经pid(进程号)
丄每个进程可以支持多少连接
丄mime.types文件中指定哪种格式的文件交给那个模块处理(和apache一样)
丄开启高效文件传输(默认开启有可能导致图片显示不出来)
丄开启高效文件传输(默认开启有可能导致图片显示不出来)
丄定义每个分发路径的区域 。 端口和域名。
丄1,定义网页分发根目录所在位置2,定义索引文件
丄定义了报错404时使用的页面的位置
丄定了这些错误码去哪里引用
丄如果网页分发根目录下有.php结尾的文件就交给本地端口9000去处理,处理完请求后交给nginx去返回请求
三、单个Nginx 的安装
yum -y install gcc*
yum -y install pcre pcre-devel zlib zlib-devel openssl-devel openssl
useradd -M -s /sbin/nologin nginx
解压软件包 nginx
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
make
make install
useradd -M -s /sbin/nologin nginx
添加监控模块
vi /usr/local/nginx/conf/nginx.conf
location /abc {
stub_status on;
}
保存退出,重启服务。
访问前面指定的abc目录
丄1,当前有4个链接,2,第一,请求的次数,第二,响应的次数,第三,返回的请求的次数3,请求中的信息,返回的信息,正在等待的请求。
四、 Nginx实验
1、Nginx 身份验证
a、基于用户名密码
vi /usr/local/nginx/conf/nginx.conf
location /abc {#为上面的状态统计做加密
stub_status on;#开启
auth_basic "Welcome to nginx!";#欢迎信息
auth_basic_user_file /usr/local/nginx/html/a.psd;#信息的文件所在位置
}
htpasswd -c /usr/local/nginx/html/a.psd zhangsan#htpasswd是apache的命令,所以需要安装apache,通过这个命令生成指定哪个用户可以访问。
htpasswd -m/usr/local/nginx/html/a.psd lisi
修改配置文件
保存退出,创建密码文件htpasswd -c /usr/local/nginx/html/a.psd zhangsan
重启nginx 。 -t检查配置文件语法
再次访问abc监控文件测试
输入zhangsan密码123登陆
b、基于IP限制访问
实验环境nginx服务器64,客户端76
vi /usr/local/nginx/conf/nginx.conf
location /abc {
stub_status on;
auth_basic "Welcome to nginx!";
auth_basic_user_file /usr/local/nginx/html/a.psd;
allow 192.168.116.64;
deny 192.168.116.0/24; 允许64拒绝116网段,拒绝所有 0.0.0.0
}
更改后如下
;保存退出重启服务。
64访问。
其他人访问。
c、虚拟主机
实验环境:64服务器,73客户端
vi /usr/local/nginx/conf/nginx.conf
复制 server{} 区域,不同的 server区域则是不同的虚拟主机,同 apache 拥有基于域名端口的虚拟
主机
删掉配置文件里server区的模板和注释后复制server区
基于端口不同。修改两者的不同,端口和家目录
创建目录,和网页文件
重启服务
访问80端口
访问8080端口
基于域名不同。端口相同修改域名。
在客户端映射文件中写入ip域名对应关系。
分别访问测试
d、Nginx的反向代理功能
说明:反向代理的实现过程是,当客户端访问请求道 nginx 服务器是,nginx充当客户端去真正的服务端去
数据,返回给client端,这个过程称之为反向代理
实验环境说明:192.168.116.73安装了lamp环境,192.168.116.64安装了 nginx 程序,实现 nginx 完全的反
向代理
73,启动apache服务,到网页分发目录下创建index.html文件写入test用于测试
64,修改nginx的配置文件
修改server区的location区删除路径和格式两行,添加proxy_pass http://192.168.116.73:80;
②、在 / 的区域内设置反向代理
location / {
proxy_pass http://dudu.com
}
保存,重启服务
访问,反向代理nginx服务器
e、负载调度的用法
upstream:可以进行一些简单的负载
rr轮询机制算法。收到的请求在每个服务器之间切换。
hash,某个ip断开后下次仍然可以访问用一个服务器。
实验环境:64nginx反向代理服务器 ,73,和75,做apache服务器或lamp
①、在server区域外创建一个 upstream 区域,此区域中编写的内容为负载群
upstream dudu.com {
ip_hash; #指定算法
#调度算法,默认 rr 轮训,hash常用语解决session共享的问题
server 192.168.116.73:80 weight 1; #指定后端服务器server 192.168.116.75:80 weight 1;
server 192.168.116.xx:80 weight 1 backup;
#backup 表示机器处于热备状态,weight代表权重(可以不写),权重越高代表使用越多
}
退出,重启服务
用76客户端访问测试
刷新
使用hash算法
重启服务
测试
刷新不变