Nginx从入门到精通

50 篇文章 4 订阅
26 篇文章 4 订阅

Nginx介绍

一、Nginx介绍

Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。和apache一样,都是web服务器软件,因为其性能优异,所以被广大运维喜欢。又因为nginx是一个轻量级的web服务器,相比apache来说资源消耗更低

延伸版本:tengine(淘宝)、openresrt(章亦春)等

  • http://nginx.org 官网
  • http://www.nginx.cn/doc/index.html 中文文档

二、为什么选择Nginx

Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.

作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。

三、Nginx和Apache对比

  • 静态文件处理能力:nginx高于apache
  • 资源消耗:nginx优于apache,因为nginx是异步处理模型,只需要几个进程就能够处理大量在线请求,而apache 2.4仍然是进程模型或者线程模型,即仍然采用大量线程来处理大量在线请求。
  • Apache支持的模块很多,而且也比较稳定。而nginx由于出现的比较晚,所以在这方面可能比不上Apache。
  • nginx本身就是一个反向代理服务器,而且支持7层负载均衡。
  • nginx处理动态页面很鸡肋,一般只用与处理静态页面和反向代理。

Nginx安装部署

一、nginx源码下载

官网:http://nginx.org/

源码包:nginx-1.19.3.tar.gz

源码包下载:wget http://nginx.org/download/nginx-1.19.3.tar.gz -P /usr/src

二、nginx安装

2.1、下载nginx源码包
[root@zutuanxue ~]# wget http://nginx.org/download/nginx-1.19.3.tar.gz -P /usr/src
[root@zutuanxue src]# cd /usr/src

2.2、安装nginx依赖包
[root@zutuanxue ~]# yum -y install gcc pcre-devel zlib-devel
  - gcc: 源码编译工具 
  - pcre-devel: nginx url_rewrite 功能提供包 
  - zlib-devel: nginx 压缩功能提供包	

2.3、解压nginx源码,并进入源码包
[root@zutuanxue src]# tar xf nginx-1.19.3.tar.gz
[root@zutuanxue src]# cd nginx-1.19.3


2.4、配置nginx源码

[root@zutuanxue nginx-1.19.3]# ./configure --prefix=/usr/local/nginx
    配置目的:
      1)检查环境 是否 满足安装条件     依赖解决
      2)指定安装方式    配置文件   命令文件  各种文件放哪里   开启模块功能【内置模块  三方模块】
      3)指定软件安装在那里


2.5、编译nginx源码
[root@zutuanxue nginx-1.19.3]# make -j4

2.6、安装nginx
[root@zutuanxue nginx-1.19.3]# make install

三、nginx相关目录

nginx path prefix: “/usr/local/nginx”

nginx binary file: “/usr/local/nginx/sbin/nginx”

nginx modules path: “/usr/local/nginx/modules”

nginx configuration prefix: “/usr/local/nginx/conf”

nginx configuration file: “/usr/local/nginx/conf/nginx.conf”

nginx pid file: “/usr/local/nginx/logs/nginx.pid”

nginx error log file: “/usr/local/nginx/logs/error.log”

nginx http access log file: “/usr/local/nginx/logs/access.log”

四、nginx启动管理

配置文件测试:/usr/local/nginx/sbin/nginx -t

Nginx启动:/usr/local/nginx/sbin/nginx

Nginx关闭:killall –s QUIT nginx

五、nginx启动测试

nginx安装完毕,接下来就可以启动nginx了,nginx启动后如何测试nginx的启动状态呢?可以通过以下三种方式去测试,这个可以根据自己的习惯选择一种测试就行了。

  • 使用netsata命令查看启动端口
    [root@zutuanxue ~]# netstat –ntpl
  • 使用losf命令查看启动端口
    [root@zutuanxue ~]# lsof -i :80
  • 使用文本浏览器访问nginx默认网站
    [root@zutuanxue ~]# elinks http://IP
    测试内容:
    在这里插入图片描述

默认网站

一、默认网站

server {
    listen       80;

    server_name  localhost;

    location / {

        root   html;

        index  index.html index.htm;

        #支持目录浏览
         autoindex  on;

    }

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

        root   html;

    }

}

二、访问控制

location /a {
    autoindex on;
    allow 192.168.12.0/24;
    deny all;
    #基于客户端IP做过滤,符合条件的允许访问,不符合的返回404;
    if ( $remote_addr !~ "192.168.12" ) {
          #return 404;
          return http://book.ayitula.com;
             }

    }

三、登陆验证

location /c {
    auth_basic "登陆验证";
    auth_basic_user_file /etc/nginx/htpasswd;

}

四、日志管理

Nginx访问日志主要有两个参数控制

log_format #用来定义记录日志的格式(可以定义多种日志格式,取不同名字即可)

access_log #用来指定日至文件的路径及使用的何种日志格式记录日志

access_log logs/access.log main;

log_format格式变量:
    $remote_addr  #记录访问网站的客户端地址
    $remote_user  #远程客户端用户名
    $time_local  #记录访问时间与时区
    $request  #用户的http请求起始行信息
    $status  #http状态码,记录请求返回的状态码,例如:200、301、404等
    $body_bytes_sent  #服务器发送给客户端的响应body字节数
    $http_referer  #记录此次请求是从哪个连接访问过来的,可以根据该参数进行防盗链设置。
    $http_user_agent  #记录客户端访问信息,例如:浏览器、手机客户端等
    $http_x_forwarded_for  #当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置

自定义一个json格式的访问日志

log_format main_json '{"@timestamp":"$time_local",'
'"client_ip": "$remote_addr",'
'"request": "$request",'
'"status": "$status",'
'"bytes": "$body_bytes_sent",'
'"x_forwarded": "$http_x_forwarded_for",'
'"referer": "$http_referer"'
'}';
access_log logs/access_json.log main_json;

日志截断

mv access.log access.log.0

killall -USR1 \`cat master.nginx.pid\`

sleep 1

gzip access.log.0

五、防盗链

location /images/ {
alias /data/images/;
valid_referers none blocked *.ayitula.com;
    if ($invalid_referer) {
    rewrite ^/  
    http://www.ayitula.com/daolian.gif;
    #return 403;
    }
}

虚拟主机

一、虚拟主机介绍

虚拟主机 就是把一台物理服务器划分成多个“虚拟”的服务器,每一个虚拟主机都可以有独立的域名和独立的目录,可以独立发布一个网站。

实验案例: 同时发布两个网站:

  • DocumentRoot /usr/local/nginx/html/web1
  • DocumentRoot /usr/local/nginx/html/web2

二、基于IP的虚拟主机

应用场景:IP充足的环境,每个网站需要一个IP地址

server {
    listen       192.168.11.251:80;
    location / {
        root   html/web1;
        index  index.html index.htm index.php;
    }
}
server {
    listen       192.168.11.252:80;
location / {
        root   html/web2;
        index  index.html index.htm;
    }
}
基于IP的虚拟主机特点
  • 不同IP对应不同网站
  • 访问方便,用户直接使用默认端口即可访问
  • 服务器需要有多个IP地址(一个公网IP大概一年的费用是600左右)
  • 维护方便,基于独立IP的站点,便于监控、维护。

三、基于端口的虚拟主机

应用场景:IP不足的环境

  • 优点: 多个网站发布使用该配置方法只需要一个IP,节省IP地址
  • 缺点 端口你是无法告诉公网用户,无法适用于公网客户,适合内部用户
基于端口
server {
    listen       80;
    #server_name  www.zutuanxue.com;
    location / {
        root   html/web1;
        index  index.html index.htm index.php;
    }
}
server {
    listen       8080;
    #server_name  www.zutuanxue.com;
    location / {
        root   html/web2;
        index  index.html index.htm;
    }
}
基于端口的虚拟主机特点
  • 不同端口对应不同网站
  • 访问需要加端口
  • 节省IP地址
  • 适合私网运行

四、基于域名的虚拟主机

应用场景:一个网站需要有一个域名,目前公网发布网站的首选

基于域名
server {
    listen       80;
    server_name  web1.zutuanxue.com;

    location / {
        root   html/web1;
        index  index.html index.htm index.php;

    }
}


server {
    listen       80;
    server_name  web2.zutuanxue.com;

    location / {
        root   html/web2;
        index  index.html index.htm;
    }
}
基于域名的虚拟主机特点
  • 不同域名对应不同网站
  • 需要多个域名 可以是二级或三级域名
  • 每个站点使用默认端口,方便用户访问
  • 只需要一个IP地址,节约成本
  • 适合公网环境
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MagnumOvO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值