Nginx的特点是:
1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;
2、Nginx对网络的依赖比较小;
3、Nginx安装和配置比较简单,测试起来比较方便;
4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;
5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测;
6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;
7、Nginx能支持http和Email,这样就在适用范围上面小很多;
8、不支持Session的保持、对Big request header的支持不是很好,另外默认的只有Round-robin和IP-hash两种负载均衡算法。
nginx
三台实验用虚拟机
版本:redhat6.5
IP:172.25.10.1~172.25.10.3 分别是server1~3
server1:|CPU:2 | memory:1024M | seliunx:disabled
server2:|CPU:1 | memory:1024M | seliunx:disabled
server2:|CPU:1 | memory:1024M | seliunx:disabled
实验:
nginx-1.10.1.tar.gz
压缩包传给server1通过tar zxf nginx-1.10.1.tar.gz 进行解压
进入/root/Desktop/nginx-1.10.1目录
编辑auto/cc/gcc 文件将179行注释
178 # debug
179 #CFLAGS="$CFLAGS -g"
编辑src/core/nginx.h 将14行后参数改为"nginx"
#define NGINX_VER "nginx"
两步操作可以curl -I 命令中nginx的版本隐藏
命令./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module 生成Makefile 静态安装 注意空格
生成过程中缺什么安装什么
yum install -y pcre-devel
yum install -y openssl-devel
ll Makefile
在make之前没有/usr/local/lnmp/nginx/目录
切换到 nginx-1.10.1 : make 后生成/usr/local/lnmp/nginx/目录
make install 安装到系统里
ll -d /usr/local/lnmp/nginx/
进入/usr/local/lnmp/nginx/目录
which nginx 查看nginx的路径
创建软链接ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
查看nginx服务是否配置成功nginx -t
重新加载nginx服务nginx -s reload
物理机浏览器输入server1 IP 即可显示相关页面
nginx web服务器以搭建好
下面做的是nginx服务进程的,限制 ,查看
进入/usr/local/lnmp/nginx/conf目录
创建新用户useradd -u 900 -d /usr/local/lnmp/nginx nginx
编辑nginx.conf文件 将第二行注释删除,将user改成nginx
user nginx;
查看nginx服务是否配置成功nginx -t
重新加载nginx服务nginx -s reload
ps aux查看nginx进程个数
关闭server1
将虚拟机server1的CPU个数添加为两个
打开虚拟机管理器 点击 processor cpu添加为2个
重新连接
lscpu查看CPU个数
编辑nginx.conf文件将work_processes 后接参数改为2
user nginx;
worker_processes 2;
worker_cpu_affinity 01 10;
查看nginx服务是否配置成功nginx -t
重新加载nginx服务nginx -s reload 【如果出现 nginx: [error] open() "/usr/local/lnmp/nginx/logs/nginx.pid" failed (2: No such file or directory) 则说明nginx没开 直接打:nginx 就开启了】
然后 cd /usr/local/sbin
ll 查看nginx的软连接
rm -f nginx 删除 nginx连接
ln -s /usr/local/lnmp/nginx/sbin/ngin /usr/local/sbin 重新创建软连接
ulimit -a 查看当前用户进程限制
cd 切换到root/ vim /etc/security/limits. conf
在最后加上 nginx - nofile 200 该用户文件限制为200
nginx - nproc 200 该用户进程限制为200
su - nginx 切换到该用户
ulimint -a 来查看
cd /usr/local/lnmp/nginx/conf/
vim nginx.conf 打开文件修改参数
events {
use epoll;
worker_connections 65535; 这里为root的总进程数
}
ulimint -a 来查看
vim nginx.conf 打开文件添加下列参数
location /status {
stub_status on;
access_log off;
}
查看nginx服务是否配置成功nginx -t
重新加载nginx服务nginx -s reload
切换到物理机浏览器 server1 ip/status 查看进程数
在物理机打 ab -n 5000 -c 500 http://172.25.9.1/index.html
-n 为5000进程 -c 为500个客户端同时发送 【不成功,要在server1 启动nginx】
在看 切换到物理机浏览器 server1 ip 查看进程数
下面做的是 nginx 可以用加密协议 https 访问
vim nginx.conf 打开文件修改下列参数
server {
listen 443 ssl;
server_name server1.example.com;
ssl_certificate cert.pem;
ssl_certificate_key cert.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
去掉注释,并修改为这样 server_name server1.example.com; ssl_certificate_key cert.pem;
cd /etc/pki/tls/certs/
make cert.pem 生成这个文件 参数为下
1 CN 2 Shaanxi 3 xi'an 4 westos 5 linux 6 server1.example.com 7 root@server1.example.com
然后 mv cert.pem /usr/local/lnmp/nginx/conf
查看nginx服务是否配置成功nginx -t
重新加载nginx服务nginx -s reload
打开浏览器输入 https://server1 ip
选择 i unserstand the risks
下面是nginx的反向代理与负载均衡
vim /usr/local/lnmp/nginx/conf/nginx.conf 添加以下参数
server {
listen 80;
server_name www.westos.org;
location /{
root /web1;
index index.html;
}
}
server {
listen 80;
server_name www.linux.org;
location /{
root /web2;
index index.html;
}
}
mkdir /web1 /web2 建立二根个目录
分别切换到 cd /web1
vim index.html 随便写东西
cd /web2
vim index.html 随便写东西和第一个不一样就行
查看nginx服务是否配置成功nginx -t
重新加载nginx服务nginx -s reload
那台机子访问就:
vim /etc/hosts 写上ip解析
如:172.25.9.1 server1.example.com www.westos.org www.linux.org
打开浏览器就可以访问了 输入网址如:www.westos.org www.linux.org
以上为反向代理,下面为负载均衡
vim /usr/local/lnmp/nginx/conf/nginx.conf 添加以下
注释 #root /web1;
#index index.html;
添加 proxy_pass http://westos; 地址转换
http {
upstream westos {
server 172.25.9.2:80 ;
server 172.25.9.3:80 ;
}
}
此为负载均衡模块
查看nginx服务是否配置成功nginx -t
重新加载nginx服务nginx -s reload
打开 server2 server3 的httpd服务
/etc/init.d/httpd start
然后 for i in $(seq 10);do curl www.westos.org; done 进行实验
阿帕奇和nginx的区别:
1.nginx比阿帕奇快,(进程和线程的区别?)nginx:异步非阻塞机制 阿帕奇:阻塞机制