1. nginx可以做什么?
1.1 作为WEB服务的话⽀持
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
1.3 优点
2. apache的特点
2.1. ⽹络模式
同步⽹络模式 select
每个请求的状态始终在维护着 (消耗好多资源)
异步⽹络模式 epoll 处理服务器端的并发 请求⼈数越多 服务器肯定吃紧 系统资源也会紧张 I/O效率也会很慢
不定期将你的请求 筛选出来 直接告诉你 不⽤挨个select
epoll
每个请求 我不再维护你的状态 如果有请求 就找我 找到了 给你服务 找不到拉倒
3. lighttpd的特点
如何选择web服务器?
如果在Ubuntu16.04下使⽤apt安装nginx,安装完毕后其⼯作⽬录设置如下:
nginx站点配置⽬录:/etc/nginx/
其中主配置为nginx.conf
sites-available⼦⽬录存放站点配置⽂件,其中有⼀个default⽂件为虚拟
站点的配置模板,⾃⼰的虚拟站点可以以此为模板进⾏配置。
sites-enabled⼦⽬录存放⼀个对应站点配置⽂件的软连接。必须sitesavailabel⽣成站点的配置⽂件,然后到sites-enabled添加对应的软连接。
默认站点根⽬录 : /var/www/html/
⽇志⽂件⽬录:/var/log/nginx/
error.log记录站点的错误,如果要查看详细的错误信息,可以打开该⽂件
查看
以www.blog.com站点为例说明多个虚拟站点配置的⽅法:
#安装nginx
sudo service apache2 stop #停⽌apache
sudo apt-get install nginx-full -y
#虚拟站点配置
#1.⾸先切换⽬录到sites-available⽬录
cd /etc/nginx/sites-available
#2.复制虚拟站点配置模板,⽣成⾃⼰虚拟站点的配置⽂件
sudo cp default www.blog.com.conf
#3 编辑模板
#---------------------以下为配置内容-------------------
server {
listen 80; #监听端⼝
#站点的根⽬录
root /var/www/html/www.blog.com;
# Add index.php to the list if you are using PHP
#⽹站默认⾸⻚打开顺序
index index.html index.htm;
#站点名称,可以有多个名称,中间⽤空格隔开
server_name www.blog.com blog.com;
}
#------------------到此结束------------------------------
#这个模板⽐较简单,如果有复杂的要求,请以此为基础进⾏改进
#4 保存退出
:wq
#5 切换到sites-enabled⽬录下,创建软连接
cd ../sites-enabled
sudo ln -s /etc/nginx/sites-available/www.blog.com.con
www.blog.com.conf
#6 重启nginx服务
sudo service nginx restart (start/stop)
或者
sudo /etc/init.d/nginx restart
#7 切换到站点根⽬录(根据你⾃⼰的设定进⾏),我假定站点根⽬录是/var/www/html
cd /var/www/html
sudo chmod -R 755 www.blog.com
#编辑index.html
<html>
<head>
<meta charset='utf-8'>
<title>疯狂程序员的博客</title>
</head>
<body>
<h1>疯狂的程序员</h1>
</body>
</html>
#保存退出
:wq
#8 切换到windows系统下,编辑C:\Windows\System32\drivers\etc\hosts⽂件,
在末尾增加:
#ip为你虚拟机的ip地址
192.168.48.3 www.blog.com
#9 在windows系统下浏览器⾥输⼊ : www.blog.com
看看是否是你的⻚⾯
centos下nginx安装和配置
添加源:
sudo rpm -Uvh
http://nginx.org/packages/centos/7/noarch/RPMS/nginx-releasecentos-7-0.el7.ngx.noarch.rpm
安装Nginx
sudo yum install -y nginx
启动Nginx并设置开机⾃动运⾏
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
测试,在浏览器中输⼊localhost,看缺省⽹站
负载均衡
当⼀台服务器的单位时间内的访问量越⼤时,服务器压⼒就越⼤,⼤到超过⾃身承受能⼒时,服务器就会崩溃。为了避免服务器崩溃,让⽤户有更好的体验,我们通过负载均衡的⽅式来分担服务器压⼒
⻆⾊ | ip | 作用 |
---|---|---|
lvs负载均衡 | 10.11.59.220 | 请求分担 |
web01 | 10.11.59.155 | 轮询的web服务器 |
web02 | 10.11.59.154 | 轮询的web服务器 |
这三台机⼦要求都安装了nginx环境,web01和web02结构应该是⼀样的
负载均衡服务的配置
upstream www_server_pools { #www_server_pools⾃定义的连接池名称
server 10.11.59.154; #连接的服务器,可以ip或者是域名
server 10.11.59.155;
}
server {
listen 80;
server_name www.caoliu.com;
location / {
# root /data/www;
# index index.php index.html index.htm;
proxy_pass http://www_server_pools;#http://连接池名称
proxy_set_header Host $host; #把主机的header头发给轮询
的服务器
proxy_set_header X-Forward-For $Remote_addr; #获取真实
的ip地址
}
}
** upstream模块**
是nginx⽀持负载均衡的模块,nginx_http_upstream_moudle,它所⽀持的代理⽅式:
proxy_pass
fast_cgi
memcache_pass
常⽤的轮询算法
upstream www_server_pools {
server 10.11.59.154 weight=1;
server 10.11.59.155 weight=3;#这个服务器得到的转发是上⾯的3倍
}
ip_hash 根据客户端ip哈希的结果确定访问那个服务器。
upstream www_server_pools {
server 10.11.59.154;
server 10.11.59.155;
ip_hash;
}
第三⽅的算法
fair 按照服务器忙闲,优先将请求给⼯作量⼩的服务器
url_hash 按照url哈希的结果访问不同服务器