1、配置yum源:php
1.、打开centos的yum文件夹
cd /etc/yum.repos.d/
二、用wget下载repo文件
wget http://mirrors.aliyun.com/repo/Centos-7.repocss
或者(wget http://mirrors.163.com/.help/CentOS6-Base-163.repo)
若是wget命令不生效,说明尚未安装wget工具,输入yum -y install wget 回车进行安装。(yum search wget)html
三、备份系统原来的repo文件
mv CentOs-Base.repo CentOs-Base.repo.bak
便是重命名 CentOs-Base.repo -> CentOs-Base.repo.bak
四、替换系统原理的repo文件
mv Centos-7.repo CentOs-Base.repo
便是重命名 Centos-7.repo -> CentOs-Base.reponginx
2、nginx yum安装web
1.rpm -qa | grep nginx(检查设备是否已安装nginx服务)正则表达式
2.yum search nginx(搜索yum源)算法
若是不存在,执行第三步后端
3.配置nginx源centos
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
或者
(sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm)
在/etc/yum.repos.d目录下生成nginx.pro文件,内容以下:浏览器
4.安装nginx:
yum install nginx
5.验证:
nginx -v
nginx -t
curl 127.0.0.1
3、源码安装:
4、配置文件解析:
三个核心功能是静态服务器、反向代理和负载均衡。
配置文件:nginx.conf,以下所示。
main # 全局配置
#nginx进程数,建议设置为等于CPU总核心数。
worker_processes 8;
(查看cpu参数 lscpu)(系统分页大小 getconf PAGESIZE)
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log
/usr/local/nginx/logs/error.log info;
events { # 工做模式配置
#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
use epoll;
}
http { # http设置
#文件扩展名与文件类型映射表
include mime.types;
#默认文件类型
default_type application/octet-stream;
server { # 服务器主机配置(虚拟主机、反向代理等)
#log_format,用来设置日志格式;
#access_log,用来指定日志文件的存放路径、格式和缓存大小
#日志格式设定
#$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
#$remote_user:用来记录客户端用户名称;
#$time_local: 用来记录访问时间与时区;
#$request: 用来记录请求的url与http协议;
#$status: 用来记录请求状态;成功是200,
#$body_bytes_sent :记录发送给客户端文件主体内容大小;
#$http_referer:用来记录从那个页面连接访问过来的;
#$http_user_agent:记录客户浏览器的相关信息;
#一般web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,经过$remote_addr拿到的IP地址是反向代理服务器的iP地址。
反向代理服务器在转发请求的http头信息中,能够增长x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
例如:
log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';
#定义本虚拟主机的访问日志
access_log /usr/local/nginx/logs/host.access.log main;
access_log /usr/local/nginx/logs/host.access.404.log log404;
access_log /usr/local/nginx/logs/host.access.my.log access;
location语法:
location [ = | ~ | ~* | ^~ ] uri { ... }
例如:
location ~* .*\.(jpg|gif|png|js|css)$ { root /data/av/; }
[=|~|~*|^~|@] 被称做 location modifier
$不匹配具体的字符,而是匹配字符串的结尾位置,就是说必须在字符串的结尾匹配到$前面的部分才行,好比:x.gif 能匹配成功而 x.gifa 就不行
与之相似,^ 匹配字符串开始的位置
nginx 常见正则匹配符号表示
一、 ^ : 匹配字符串的开始位置;
二、 $ : 匹配字符串的结束位置;
三、 .*: : 匹配任意字符,*匹配数量0到正无穷;
四、 \. : 斜杠用来转义,\.匹配 . ;
五、 (值1|值2|值3|值4) : 或匹配模式,例:(jpg|gif|png|bmp)匹配jpg或gif或png或bmp
六、 i : 不区分大小写
一.正则表达式匹配,其中:
~ 区分大小写匹配
~* 不区分大小写匹配
!~ 区分大小写不匹配及
!~* 不区分大小写不匹配
= 精确匹配
^~ 以某个字符串开头
/ 通用匹配,任何请求都会匹配到
1.(基本配置)
location { # 路由配置(虚拟目录等)
root /nginx/www; index index.php index.html index.htm;
}
2..(反向代理配置)
location path {
proxy_pass http://localhost:8888;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header Host $http_host;
}
3.(uwsgi配置)
location otherpath {
include uwsgi_params;
uwsgi_pass localhost:8888;
}
}
server {
location {
....
}
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
}
upstream name { # 负载均衡配置
ip_hash; server 192.168.1.100:8000 weight=9; server 192.168.1.100:8001 down; server 192.168.1.100:8002 max_fails=3; server 192.168.1.100:8003 fail_timeout=20s; server 192.168.1.100:8004 max_fails=3 fail_timeout=20s;
#upstream的负载均衡,weight是权重,能够根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的概率越大。
server 192.168.80.121:80 weight=3;
server 192.168.80.122:80 weight=2;
server 192.168.80.123:80 weight=3;
#nginx的upstream目前支持4种方式的分配
#一、轮询(默认) #每一个请求按时间顺序逐一分配到不一样的后端服务器,若是后端服务器down掉,能自动剔除。
#二、weight #指定轮询概率,weight和访问比率成正比,用于后端服务器性能不均的状况。
#例如:
upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
#3、ip_hash #每一个请求按访问ip的hash结果分配,这样每一个访客固定访问一个后端服务器,能够解决session的问题。
#例如:
upstream bakend{
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
#4、fair(第三方)
#按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backend {
server server1;
server server2;
air;
}
#5、url_hash(第三方)
#按访问url的hash结果来分配请求,使每一个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
#例:在upstream中加入hash语句,server语句中不能写入weight等其余的参数,hash_method是使用的hash算法
upstream backend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
#tips:
#upstream bakend{
#定义负载均衡设备的Ip及设备状态
}
{
# ip_hash;
# server 127.0.0.1:9090 down;
# server 127.0.0.1:8080 weight=2;
# server 127.0.0.1:6060;
# server 127.0.0.1:7070 backup;
#}
#在须要使用负载均衡的server中增长 proxy_pass http://bakend/;
#每一个设备的状态设置为:
#1.down表示单前的server暂时不参与负载
#2.weight为weight越大,负载的权重就越大。
#3.max_fails:容许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
#4.fail_timeout:max_fails次失败后,暂停的时间。
#5.backup: 其它全部的非backup机器down或者忙的时候,请求backup机器。因此这台机器压力会最轻。
#nginx支持同时设置多组的负载均衡,用来给不用的server来使用。 }}