我是靠谱客的博主 娇气枕头,最近开发中收集的这篇文章主要介绍Nginx 架构说明&配置使用实践,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Nginx 安装:

Nginx 架构说明:

Nginx实践:

-------------------------

Nginx 安装:

Nginx 架构说明:

Nginx 架构图:

 

架构说明:

1)nginx启动时,会生  不处理网络请求,主要负责调度工作进程,也就是图示的三项:加载配置、启动工作进程及非停升级。所以,nginx启动以后,查看操作系统的进程列表,我们就能看到至少有两个nginx进程。

2)服务器实际处理网络请求及响应的是工作进程(worker),在类unix系统上,nginx可以配置多个worker,而每个worker进程都可以同时处理数以千计的网络请求。

3)模块化设计。nginx的worker,包括核心和功能性模块,核心模块负责维持一个运行循环(run-loop),执行网络请求处理的不同阶段的模块功能,如网络读写、存储读写、内容传输、外出过滤,以及将请求发往上游服务器等。而其代码的模块化设计,也使得我们可以根据需要对功能模块进行适当的选择和修改,编译成具有特定功能的服务器。

4)事件驱动、异步及非阻塞,可以说是nginx得以获得高并发、高性能的关键因素,同时也得益于对Linux、Solaris及类BSD等操作系统内核中事件通知及I/O性能增强功能的采用,如kqueue、epoll及event ports。

Nginx 核心模块:

Nginx实践:

1、配置文件的语法格式:

先来看一个简单的nginx 配置

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;

        }

        location /nginx_status {

       stub_status on;

       access_log   off;

      }

    }

}

上述配置中的events、http、server、location、upstream等属于配置项块。而worker_processes 、worker_connections、include、listen  属于配置项块中的属性。   /nginx_status   属于配置块的特定参数参数。其中server块嵌套于http块,其可以直接继承访问Http块当中的参数。

配置块

名称开头用大口号包裹其对应属性

属性

基于空格切分属性名与属性值,属性值可能有多个项 都以空格进行切分 如:

access_log  logs/host.access.log  main

参数

其配置在 块名称与大括号间,其值如果有多个也是通过空格进行拆

注意 如果配置项值中包括语法符号,比如空格符,那么需要使用单引号或双引号括住配置项值,否则Nginx会报语法错误。例如:

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                     '$status $body_bytes_sent "$http_referer" '

                     '"$http_user_agent" "$http_x_forwarded_for"';

2、配置第一个静态WEB服务

基础站点演示:

  1. 创建站点目录 mkdir -p /usr/www/luban
  1. 编写静态文件
  1. 配置 nginx.conf
    1. 配置server
    1. 配置location

 

基本配置介绍说明:

(1)监听端口

语法:listen address:

默认:listen 80;

配置块:server

 

(2)主机名称

语法:server_name name[……];

默认:server_name "";

配置块:server

server_name后可以跟多个主机名称,如server_name www.testweb.com、download.testweb.com;。 支持通配符与正则

 

(3)location

语法:location[=|~|~*|^~|@]/uri/{……}

配置块:server

  1. =表示把URI作为字符串,以便与参数中的uri做完全匹配。
  2. / 基于uri目录匹配
  3. ~表示正则匹配URI时是字母大小写敏感的。
  4. ~*表示正则匹配URI时忽略字母大小写问题。
  5. ^~表示正则匹配URI时只需要其前半部分与uri参数匹配即可。

匹配优先规则:

  1.     精确匹配优先 =
  2.     正则匹配优先 ^~
  3.     前缀最大匹配优先。
  4.     配置靠前优化

 

(4)root 指定站点根目录

可配置在 server与location中,基于ROOT路径+URL中路径去寻找指定文件。

(5)alias 指定站点别名

只能配置location 中。基于alias 路径+ URL移除location  前缀后的路径来寻找文件。

如下示例:

location /V1 {

      alias  /www/old_site;

      index  index.html index.htm;

}

#防问规则如下

URL:http://xxx:xx/V1/a.html

最终寻址:/www/old_site/a.thml

 

 

 

动静分离演示:

  1. 创建静态站点
  1. 配置 location /static
  1. 配置 ~* .(gif|png|css|js)$

基于目录动静分离

   server {

        listen 80;

        server_name *.luban.com;

        root /usr/www/luban;

        location / {

                index luban.html;

        }

        location /static {

         alias /usr/www/static;

        }

 }

基于正则动静分离

location ~* .(gif|jpg|png|css|js)$ {

      root /usr/www/static;

}

 

防盗链配置演示:

# 加入至指定location 即可实现

valid_referers none blocked *.luban.com;

 if ($invalid_referer) {

       return 403;

}

 

下载限速:

location /download {

    limit_rate 1m; //限制每S下载速度

    limit_rate_after 30m; // 超过30 之 后在下载

}

 

创建IP黑名单

#封禁指定IP

deny 192.168.0.1;

allow 192.168.0.1;

#开放指定IP 段

allow 192.168.0.0/24;

#封禁所有

deny    all;

#开放所有

allow    all;

# 创建黑名单文件

echo 'deny 192.168.0.132;' >> balck.ip

#http 配置块中引入 黑名单文件

include       black.ip;

 

最后

以上就是娇气枕头为你收集整理的Nginx 架构说明&配置使用实践的全部内容,希望文章能够帮你解决Nginx 架构说明&配置使用实践所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部