nginx 基础及使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 基础及使用相关的知识,希望对你有一定的参考价值。

nginx由于出色的性能,在世界范围内受到了越来越多人的关注,淘宝内部被广泛使用

介绍:

Nginx俄罗斯人编写的十分轻量级HTTP服务器,是一个高性能HTTP和反向代理服务器,同时也是一个IMAP、POP3、SMTP代理服务器,Nginx以事件驱动的方式编写,所以有非常好的性能,同事也是一个非常高效的反向代理,负载平衡,其拥有匹配Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题。

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

 

特点:

Nginx作为HTTP服务器,有几个基本特性:

l  处理静态文件,索引文件以及自动索引,打开文件描述符缓冲,

l  无缓存的反向代理加速,简单的负载均衡和容错

l  FastCGI,简单的负载均衡和容错

l  模块化结构,包括gzipping,byte ranges,chunked respinse,以及SSI-filter等filter如果由 FastCGI 或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。

l  支持 SSL 和 TLSSNI.

 

配置:

nginx.conf 是主配置文件

worker_process 工作进程的数量

worker_connections 表示每个工作进程的最大连接数量

server{}块定义了虚拟主机

l  listener监听接口,监听本机ip和端口

l  server_name监听域名

    1. 完整的主机名 如:api.luf.com
    2. 含有通配符 如*.luf.com  或者 api.*  (通配符只能在开头或者结尾,只能有一个)
    3. 正则表达式,以~开头

l  location{}是用来为配置的URI进行配置,URI即语法中的“/uri/" location / {}匹配任何查询,因为所有请求都是以/开头

    1. root指定对应URI的资源查找路径,
    2. index指定首页index文件的名称,可以配置多个,以空格分开。
    3. ~  表示执行一个正则匹配,区分大小写
    4. ~* 表示执行一个正则匹配,不区分大小写
    5. ^~ 表示普通字符匹配,如果该选项匹配,值匹配该选项,一般用来匹配目录
    6. =  进行普通字符精确匹配
    7. @  定义个命令location 使用在内部定向时,

mime.types

文件扩展名与文件类型映射表,Nginx根据映射关系,设置HTTP请求响应头的conntent-type值。

 

架构:

Nginx启动后,后台进程中包含一个master进程和多个worker进程。master来管理worker进程,所以我们只需要与master进程通信就行了,master进程会接收来自外界发来的信号,在根据信号做不同的事情,比如kill -HUP pid则是告诉Nginx,从容地重启Nginx,(过程:首先从新加载配置文件,然后在启动新的worker进程,并想所有旧的worker发送信号退出,新的worker启动后,就开始接收新的请求,老的worker在接收到信号后,不在接收新的请求,并在当前进程中所有未处理完的请求处理完成后在退出)在Nginx0.8版本之后,引入了一系列命令行参数管理,比如./nginx -s reload 重启, ./nginx -s stop 停止。

 

Nginx使用

 

使用:

转发:

server_name localhost:8080;  

location / {  

    proxy_pass http://localhost:8080;  

 

常用命令:

l  开始: start nginx

l  停止: nginx -s stop

l  nginx -s reload  在Windows下失效

 

错误:

404 Not Found: root路径时相对路径  替换使用 : alias   /space/ReactRouterPro/;

react-router 刷新403 : try_files $uri /index.html; 重定向指令 前提history类型为browerHistory

 

 

语法:

Nginx的配置文件使用的就是一门微型的编程语言

l  变量只能存放一种类型的值,字符串

a)     set $a ‘hello world‘   set配置指令对变量$a进行了赋值操作

b)     $uri 请求中的当前URI不带请求参数,可以通过内部重定向

c)      $arg_name 请求中带的参数

d)     $hostname 主机名

e)     $args 请求中的参数值

f)      $query_string 同args

g)     $request 客户端请求地址

h)     $request_uri 这个变量等于包含一些客户端请求参数的原始URI

l  如果你网站上一些资源永久移除了,最快捷的方法就是使用return直接返回

  location /wrong/url {     return 404; }

l  return的第一个参数是响应代码可选第二个参数可以重定向

  location /permanently/moved/url {     return 301 http://www.example.com/moved/here; }

l  错误处理: error_page命令可以配置特定错误码的错误页面,或者重定向到其他页面

l  重写URIs: rewrite 指令可以多次修改请求的URI,第一个参数是匹配的正则表达式,第二个参数是将要替换的URI,第三个参数可选,指示是否继续可以重写或者返回重定向代码

  location /users/ {     rewrite ^/users/(.*)$ /show?user=$1 break; }

 

我的实例:  conf

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    
    keepalive_timeout  65;

    server {
        listen       8888;
        server_name  localhost;

        location / {  #用于React router项目
            alias   /space/ReactRouter/; # 配置非Nginx路径的其他路径
            try_files $uri /index.html;
            index  index.html;
        }

    }

    # server {
    #     listen       8889;
    #     server_name  localhost;
    #     location / {
    #         root   html;
    #         index  index.html;
    #     }
    
    #     location / {
    #         proxy_pass https://***.com; #代理其他服务器
    #     }
    # }



}

 

说明: 仅阅读总结。

 

以上是关于nginx 基础及使用的主要内容,如果未能解决你的问题,请参考以下文章

20155307刘浩《网络对抗》逆向及Bof基础

20155311高梓云《网络对抗》逆向及Bof基础

20145301赵嘉鑫《网络对抗》逆向及Bof基础

nginx 基础及使用

Nginx之一:编译安装及基础应用

vue3.2 基础及常用方法