1.nginx安装与基本配置
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
在虚拟控制台把vm1的Memory改为2048,启动vm1
tar zxf nginx-1.12.0.tar.gz
useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin -u 800 nginx
yum install gcc pcre-devel openssl-devel -y
cd /root/nginx-1.12.0/src/core
vim nginx.h
改为#define NGINX_VER "nginx" ## 隐藏版本号
cd /root/nginx-1.12.0/atuo/cc/
vim gcc ##去掉debug模式编译,压缩其大小
cd /root/nginx-1.12.0
./configure --prefix=/usr/local/lnmp/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module
make && make install
ln -s /usr/local/lnmp/nginx/sbin/nginx /sbin
curl -I localhost
2.进程优化
Nginx默认没有开启利用多核CPU,我们可以通过增加worker_cpu_affinity配置参数来充分利用多核CPU。CPU是任务处理,计算最关键的资源,CPU核越多,性能就越好。
通过 cat /proc/cpuinfo来看cpu核心数
规则设定
(1)cpu有多少个核,就有几位数,1代表内核开启,0代表内核关闭
(2)worker_processes最多开启8个,8个以上性能就不会再提升了,而且稳定性会变的更低,因此8个进程够用了
配置Nginx多核CPU,worker_cpu_affinity使用方法和范例
1. 2核CPU,开启2个进程
worker_processes 2;
worker_cpu_affinity 01 10;
01表示启用第一个CPU内核,10表示启用第二个CPU内核
worker_cpu_affinity 01 10;表示开启两个进程,第一个进程对应着第一个CPU内核,第二个进程对应着第二个CPU内核。
2. 2核CPU,开启4个进程
worker_processes 4;
worker_cpu_affinity 01 10 01 10;
开启了四个进程,它们分别对应着开启2个CPU内核
worker_rlimit_nofile65535;
这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文
件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
现在在linux2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。
vim /usr/local/lnmp/nginx/conf/nginx.conf
vim /etc/security/limits.conf
vim nginx.conf
测试:
3.nginx证书认证
4.访问控制
vim /usr/local/lnmp/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
allow 172.25.20.250;
deny all;
}
通过curl localhost/status进行测试查看
5.访问重写
访问www.westos.org跳转到https://www.westos.org
server {
listen 80;
server_name www.westos.org;
rewrite ^(.*)$ https://www.westos.org$1 permanent;
}
}
$1可以让访问指定目录,permanent 永久 redirect 暂时
6.nginx负载均衡
nginx的轮询机制
http {
upstream westos {
server 172.25.0.2:80;
server 172.25.0.3.8080;
Server 127.0.0.1:8000 backup;
}
注释rewrite
加上location / {
proxy_pass http://westos;
}
1>轮询(默认weight=1)
默认选项,当weight不指定时,各服务器weight相同,
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream westos { server 172.25.22.2:80; server 172.25.22.3:8080;}
2>weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
如果后端服务器down掉,能自动剔除。
比如下面配置,则1.11服务器的访问量为1.10服务器的两倍。
upstream bakend { server 172.25.22.2 weight=1; server 172.25.22.3 weight=2;}
3>ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。
如果后端服务器down掉,要手工down掉。
upstream resinserver{ ip_hash; server 172.25.22.2:80; server 172.25.22.3:8080;}
当2,3的服务都down掉后,本地的服务就会顶上,显示信息
proxy_pass反向代理