• NGINX配置详解及应用


    目录

    NGINX    1

    1.1    目录结构    1

    1.2    基础配置    1

    1.3    location    5

    1.4    虚拟主机    5

    1.5    状态模块    6

    1.6    Rewrite    8

    1.7    访问认证    9

     

    1. 目录结构

      # tree /application/nginx/

    2. 基础配置

      Nginx整个配置文件是以区块的形式组织的。每个区块以一个大括号{}来表示,区块可分为几个层次,整个配置文件中,Main区位于最上层,在Main区下面可以有Events区、Http区等层级,在Http区中又包含一个或多个server区,每个server区中又可有一个或多个location区,主体框架如下:

      # egrep -v "^$|#" /usr/local/nginx/conf /nginx.conf.default

      核心框架如下:

       

      操作

      # /usr/local/nginx/sbin/nginx -s reload

      # 将11行localhost改成对应的网站名后,重启

      # 对应的bingbing.jpg图片存在当前目录下

      # cat /usr/local/nginx/html/index.html

      <html>

      <head>

      <title>Nginx of kazihuo</title>

      <body background="bingbing.jpg">

      My name is kazihuo!

      </body>

      </head>

      </html>

       

      多个配置文件的调用,需满足以下条件

      方框内conf.d为多出的自定义的配置文件目录,圈内aaa为自定义域名对应的根目录

      # ls /usr/local/nginx/

      aaa conf fastcgi_temp logs sbin uwsgi_temp

      client_body_temp conf.d html proxy_temp scgi_temp

      # cat /usr/local/nginx/conf/nginx.conf

      worker_processes 1;

      events {

      worker_connections 1024;

      }

      http {

      include mime.types;

      default_type application/octet-stream;

      sendfile on;

      keepalive_timeout 65;

      server {

      listen 80;

      server_name localhost;

      location / {

      root html;

      index index.html index.htm;

      }

      error_page 500 502 503 504 /50x.html;

      location = /50x.html {

      root html;

      }

      }

      include /usr/local/nginx/conf.d/*.conf;

      }

       

      自定义的配置文件只需配置server区域(个人实操:多配报错)

      # cat /usr/local/nginx/conf.d/kazihuo.conf

      server {

          listen 80;

          server_name aaa.kazihuo.com;

          location / {

              root aaa;

              index index.html index.htm;

          }

      }

    3. location

    • 作用

    location指令的作用是根据用户请求的URI来执行不同的应用。

    • 语法

    location[=|~|~*|^~|@]uri{

    ···

    }

    • 说明

    location

    [=|~|~*|^~|@]

    uri

    {···}

    指令

    匹配标识

    匹配的网站网址

    匹配URI后要执行的配置段

    上表中URI部分是关键,其可以是普通的字符串地址路径或者是正则表达式,当匹配成功则执行后面大括号里面的相关指令,正则表达式可有特殊字符。

    • 特殊字符

    =    表示精确匹配

    ~   表示区分大小写的正则匹配

    ^~  表示以某个常规字符串开头的url即可

    ~*  表示不区分大消息的正则匹配

    !~(*!~) 表示不区分大小写不匹配的正则

    /   通配符,任何请求都能匹配到这个location,如果有任何其他location可以匹配,则会覆盖该location

    1. 虚拟主机

    • 概念

    虚拟主机在WEB服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可独立对外提供服务供用户访问。

    Nginx使用一个server{}标签来标记一个虚拟主机,一个WEB服务里可有多个虚拟主机标签对,即同时可支持多个虚拟主机站点。

    • 类型

    基于域名的虚拟主机

    应用:外部网站

    基于端口的虚拟主机

    应用:公司内部网站

    基于IP的虚拟主机

    应用:几乎不用

    1. 状态模块

      在配置文件里,添加如下配置

      # /usr/local/nginx/sbin/nginx -s reload

      # 状态查看

      第一行表示正处理的活动连接数:6个;

      第二行对应第三行,第一个server表示nginx启动到现在共处理了62个连接;

      第二个accepts表示nginx启动到现在共成功创建62次握手;请求丢失数=(握手数-连接数),可得,本次状态显示没有丢失请求;

      第四行Reading为Nginx读取到客户端的Header信息数;Writing为Nginx返回给客户端的Header信息数;Waiting为Nginx已经处理完正在等候下一次请求指令的驻留连接,在开启keep-alive的情况下,这个值等于active-(reading+writing)。

      或者

      # cat >>/usr/local/nginx/conf/extra/status.conf<< EOF

      ##status

      server{

      listen 80;

      server_name status.kazihuo.com;

      location / {

      stub_status on;

      access_log off;

      }

      }

      EOF

      配置文件里添加一行使Nginx读取指定目录下配置文件

      include extra/*.conf;

    2. Rewrite

      主要功能是实现URL地址重写。

    • 指令语法

    rewrite regex replacement [flag];

    • 应用位置

    server、location、if

    • 说明

    rewrite 是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement部分内容,结尾是flag标记。

    • 例子

    rewrite ^/(.*) http://www.kazihuo.org/$1 permanent;

    • 解释

    rewrite为固定关键字,表示开启一条rewrite匹配规则,regex为正则表达式部分^/(.*),匹配所有,成功后跳转到http://www.kazihuo.org/$1,$1是去前面regex部分()里的内容,结尾permanent表示永久301重定向标记,即跳转到后面的http://www.kazihuo.org/$1地址上。

    • 应用场景

    *可调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求;

    *为了让搜索引擎收录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务;

    *网站换新域名后,让旧域名的访问跳转到新域名上;

    *根据特殊变量、目录、客户端的信息进行URL跳转等。

    1. 访问认证

      添加用户密码访问,只需添加方框内模块;

      # yum install httpd-tools

      # mkdir -pv /application/nginx/conf

      # htpasswd -c -b /application/nginx/conf/htpasswd kazihuo 000000

      -c 指定文件;-b 明文记载;

      # /usr/local/nginx/sbin/nginx -s reload

  • 相关阅读:
    操作系统基础知识与常见问题记录
    String
    Function
    HelloWorld
    替换空格
    二维数组中的查找
    建造者模式(Builder Pattern)
    单例模式(Singleton Pattern)
    工厂方法(Factory Pattern)
    设计模式概述
  • 原文地址:https://www.cnblogs.com/kazihuo/p/8805145.html
Copyright © 2020-2023  润新知