【linux】neginx

niginx

nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件。它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用。

目前能够提供 Web 网络服务的程序有 IIS、Nginx 和 Apache 等。其中,IIS(Internet Information Services,互联网信息服务)是 Windows 系统中默认的 Web 服务程序

特点:
支持高并发、资源消耗少、可以做http反向代理和负载均衡、支持异步网络i/o事件模型epoll

Tengine

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

安装

1.下载tengine

wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz

2.解压tengine

tar -zxvf tengine-2.3.2.tar.gz

3.进入解压后的文件夹进行编译安装

cd tengine-2.3.2
./configure --prefix=/opt/tbnginx/
make && make install

4.配置nginx的环境变量

#查看PATH值
echo $PATH
#编辑文件
vim /etc/profile
#写入PATH值,在开头添加nginx的路径,以冒号分割
PATH="/opt/tbnginx/sbin:/opt/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
#读取文件,让配置生效
source /etc/profile

5.启动nginx

nginx

nginx指令

nginx  # 启动nginx
nginx -s stop  # 停止nginx
nginx -s reload  #平滑重启,不停止进程,重新读取配置文件 
nginx -t  #检测nginx.conf语法是否正确

niginx目录结构

conf   #存放nginx的配置文件
html   #存放nginx静态文件的
logs   #nginx的运行日志,错误日志,访问日志
sbin   #存放可执行命令 

虚拟主机

虚拟主机就是将一台服务器分割成多个“虚拟服务器”,每个站点使用各自的硬盘空间,由于省资源,省钱,众多网站都使用虚拟主机来部署网站。

在nginx.conf配置文件中使用server{}代码块标签来表示一个虚拟主机。

虚拟主机类型

基于域名的虚拟主机
通过不同的域名区分不同的虚拟主机,是企业应用最广的虚拟主机。

基于端口的虚拟主机
通过不同的端口来区分不同的虚拟主机,一般用作企业内部网站,不对外直接提供服务的后台,例如www.pythonav.cn:9000

基于IP的虚拟主机
通过不同的IP区分不同的虚拟主机,此类比较少见,一般业务需要多IP的常见都会在负载均衡中绑定VIP

nginx的访问日志功能

打开nginx.conf中的如下配置

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  logs/access.log  main;
access_log  "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G"  main;

404错误页面

打开nginx.conf中的如下配置

http {
    proxy_intercept_errors on;
    # 使用uwsgi后要配置:uwsgi_intercept_errors  
    # uwsgi_intercept_errors  on;
    server {
        listen       80;
        location / {
        }
        location  /static {
        }
        error_page   500 502 503 504 404  /404.html;
        location = /404.html {
                root  /opt/tbnginx/html/404; # 404页面存放的路径:
        }
}

Nginx配置文件

CoreModule核心模块

user www;                       #Nginx进程所使用的用户
worker_processes 1;             #Nginx运行的work进程数量(建议与CPU数量一致或auto)
error_log /log/nginx/error.log  #Nginx错误日志存放路径
pid /var/run/nginx.pid          #Nginx服务运行后产生的pid进程号

events事件模块

events {            
    worker_connections  #每个worker进程支持的最大连接数
    use epool;          #事件驱动模型, epoll默认
}

http内核模块

# 公共的配置定义在http{}
http {  //http层开始
...    
    #使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机)
    'server' {
        listen       80;        #监听端口, 默认80
        server_name  localhost; #提供服务的域名或主机名
        access_log host.access.log  #访问日志
        #控制网站访问路径
        'location' / {
            root   /usr/share/nginx/html;   #存放网站代码路径
            index  index.html index.htm;    #服务器返回的默认页面文件
        }
        #指定错误代码, 统一定义错误页面, 错误代码重定向到新的Locaiton
        error_page   500 502 503 504  /50x.html;
    }
    ...
    #第二个虚拟主机配置
    'server' {
    ...
    }
    
    include /etc/nginx/conf.d/*.conf; #包含/etc/nginx/conf.d/目录下所有以.conf结尾的文件

}   #http层结束

反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定,提高了内部服务器的安全。

配置反向代理

server {
      listen       80 default_server;
       server_name  _;
       location / {
       #请求转发参数 proxy_pass
       proxy_pass    http://192.168.13.117;
       }
}  

负载均衡

Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,
实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾
在这里插入图片描述
Nginx要实现负载均衡需要用到proxy_pass代理模块配置,Nginx负载均衡与Nginx代理不同地方在于:Nginx代理仅代理一台服务器,而Nginx负载均衡则是将客户端请求代理转发至一组upstream虚拟服务池,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。

配置反向代理

配置upstream:在nginx.conf的 http 区域中添加配置

upstream myupstream {
      server 10.0.0.10:8000;
      server 10.0.0.11:9000;
      #可以添加多个
}

配置location

location / {
  	#请求转发参数 proxy_pass
    #proxy_pass是基于http协议的请求转发
    proxy_pass   http://myupstream;
}

此时初步负载均衡已经完成,upstream默认按照轮训方式负载,每个请求按时间顺序逐一分配到后端节点。

upstream分配策略

1.轮询:

upstream的默认分配策略就是轮询

2.weight 权重:

upstream myupstream {
       server 10.0.0.10:8000 weight=5;
       server 10.0.0.11:9000 weight=10;#这个节点访问比率是大于8000的
}

3.ip_hash:

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器
upstream myupstream {
    ip_hash;
       server 10.0.0.10:8000;
       server 10.0.0.11:9000;
}

4.backup

在非backup机器繁忙或者宕机时,请求backup机器,因此机器默认压力最小

upstream myupstream {
       server 10.0.0.10:8000 weight=5;
       server 10.0.0.11:9000;
       server node.oldboy.com:8080 backup;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值