• Nginx 从入门到放弃(一)


    Nginx

    nginx的使用场景

    静态资源服务

    • 通过本地文件系统提供服务

    反向代理服务

    • nginx的强大性能

    • 缓存

    • 负载均衡

    API服务

    • OpenResty

    nginx优点

    • 高并发、高性能

    • 可扩展性好

    • 高可靠性

    • 热部署

    • BSD许可证

    nginx的安装

    详见官方文档

    nginx的启动,停止和重载

    nginx有一个主进程和一些工作进程,主进程的目的是读取执行配置和维持工作进程。nginx的默认配置文件在/usr/local/nginx/conf或/etc/nginx中

    nginx的启动

     # 执行nginx可执行文件
     $ nginx

    同时也可以通过参数 -s 进行控制

    nginx -s signal

    允许的信号量

    • stop —— 快速停止

    • quit —— 优雅的停止

    • reload —— 重新载入配置文件

    • reopen —— 重新打开日志文件

    例如,等待工作进程完成当前请求后去停止nginx进程,这个命令可以被执行

     nginx -s quit

    这个命令应该被用在已经开启nginx的用户上

    改变配置文件不提交,直到重载配置的命令发送给nginx或已经重启。去重新载入配置,执行

     nginx -s reload

    主进程接收到去重载的配置信号后,它会检查新的配置文件的语法是否合法并尝试去应用所提供的配置,若应用成功,主进程将开启新的工作进程并发送信息给旧工作进程,请求它去关闭。否则,主进程就会回滚这个改变并继续用旧配置工作。旧工作进程接收到一个关闭命令后,停止接收新连接并继续去服务当前请求直到所有请求已经服务完毕。之后,旧进程退出。

    一个信号量也可能被发送给nginx进程通过unix工具的帮助,比如kill。在这种情况下,信号被定向发送给一个进程通过所给的进程号。nginx主进程的进程号被写入,默认nginx.pid在/usr/local/nginx/logs or /var/run目录下。比如,如果主进程id是1628,发送QUIT信号导致nginx 优雅关闭,执行:

    kill -s QUIT 1628

    获取所有nginx运行的进程,可以用ps命令,用这种方式

    ps -ax |grep nginx

    获取更多nginx信号量的信息,去nginx的控制

    配置文件的结构

    nginx 是由被配置文件提供的指令控制的模块组成的。这些指令分为简单指令和块指令。简单指令由名字和用空格分离的参数和用于结束的;组成的。块指令和简单指令结构相同,但取代分号用于结束的方式的是一个额外的用{}围绕的结构。如果块指令有其他指令在{}里面,它被称为上下文。(例如:events,http,server和location)

    指令放置在配置文件所有被认为是主要上下文的上下文外部。events和http指令处于main上下文中,server在http中,location在server中。

    一行中# 后面的内容被认为是评论

     # nginx.conf
     
     events {}
     
     http {
        server {
            location {
               
            }
        }
     }

    服务的静态内容

    一个重要的web服务任务就是提供文件(例如:图片或静态html页面)。你将执行一个例子,依赖于请求,文件将被提供从不同的本地目录中:/data/www(这个可能包含html文件)和/data/images(包含图片)。这些将要求编辑配置文件并启动一个在http块内的server块,里面包含两个location块。

    首先,创建/data/www目录和放入一个有文本内容的Index.html文件,并且创建一个/data/images目录并放入一些图片文件在里面。

    接下来,打开配置文件。默认的配置文件已经包含几个server块的例子,和大部分注释。现在注释掉所有的这些块,开始一个新的server块:

     http {
        server {
        }
     }

    通常,配置文件可能包含几个server块,通过它们listen的端口和server names。一旦nginx决定哪个server进程处理请求,它测试请求头指定的uri,根据在server块中location指令定义的参数。

    将以下location块添加到server块:

     location / {
        root /data/www;
     }

    这个location块指定与请求中uri进行对比的 “/” 前端。 用于匹配请求,这uri将添加在root指令中指定的路径,即/data/www,以形成本地文件系统上所请求文件的路径。如果多个匹配到location块,nginx选择一个最长的前缀。location块以上提供最短的前缀,长度一个,只有所有其他location块失败后,这个块才会被使用。

    接下来,添加第二个location块:

     location /images/ {:
        root /data;
     }

    它将匹配一个以/images/开始的请求(location / 也匹配这个请求,但有短的前缀)

    这导致server块的配置应该像这样:

     server {
        location / {
            root /data/www;
        }
         
        location /images/ {
            root /data;
        }
     }

    这是一个已经工作的服务配置,它监听标准端口80,并且可以通过http://localhost/.访问本地。响应以/images/开头的请求,这个服务将发送文件从/data/images目录。例如响应以http://localhost/images/example.png 的请求,nginx将发送/data/images/example.png文件。如果这文件不存在,nginx将返回一个带404错误的响应。不以/images/开始的请求将映射到/data/www目录。例如,响应以http://localhost/some/example.html的请求,nginx将发送/data/www/some/example.html文件

    要应用新配置,请启动nginx(如果尚未启动)或通过执行以下命令将重新加载信号发送到nginx的主进程:

     nginx -s reload

    以防一些事情不能像所期待的工作,你可以尝试在access.log和error.log中找原因,在/usr/local/nginx/logs or /var/log/nginx.中

    设置简单的代理服务器

    nginx的一个常见用途是将其设置为代理服务器,这意味着服务器接收请求,将它们传递给代理服务器,从中检索响应,然后将它们发送给客户

    我们将配置一个基本代理服务器,它使用来自本地目录的文件处理图像请求,并将所有其他请求发送到代理服务器。在此示例中,将在单个nginx实例上定义两个服务器。

    首先,通过向nginx的配置文件添加一个服务器块来定义代理服务器,其中包含以下内容:

     server {
        listen 8080;
        root /data/up1;
     
        location / {
        }
     }

    这将是一个侦听端口8080的简单服务器(之前,自使用标准端口80以来尚未指定listen指令)并将所有请求映射到本地文件系统上的/ data / up1目录。创建此目录并将index.html文件放入其中。请注意,root指令放在服务器上下文中。当选择用于提供请求的位置块不包括自己的根指令时,使用这样的根指令。

    nginx实现负载均衡

     # conf/nginx.conf
     
     upstream tomcat_server{
        server 192.168.1.2:8080 weight=1;
        server 192.168.1.3:8080 weight=1;
     }
     
     server {
        listen 80;
        server_name localhost;
         
        location / {
            proxy_pass http://tomcat_server;
        }
     }

     

  • 相关阅读:
    C++基础之预处理命令
    IOS编程之相机和相册
    NSNotificationCenter通知中心
    UIStoryboard
    IOS文件系统和数据的永久性存储
    IOS实用功能之截图(来自相册和拍照)
    ios学习笔记之block在ios开发中的应用
    [ios]ios-Demo4脱衣服/刮奖app-专业
    制作越狱版本的ipa文件
    IOS之表视图添加搜索栏
  • 原文地址:https://www.cnblogs.com/welisit/p/11006833.html
Copyright © 2020-2023  润新知