nginx 基础学习篇

1 篇文章 0 订阅

Nginx基础篇

翻译了官网nginx基础篇章的英文, 应该说对初学者非常有帮助

nginx基本命令

向nginx发送信号:

    nginx -s [signal]

signal有以下几种:

1. stop: 快速关闭nginx服务器
2. quit: 等nginx处理完当前请求,关闭服务器。(执行该命令的人必须是启动nginx的用户)
3. reload: 使nginx重新加载配置,当nginx服务器接收到这个命令是,回去检测配置的正确。如果正确,主进程则加载新配置创建新的工作进程,并通知旧进程关闭。
4. reopen: 重开日志文件

nginx配置

配置结构

nginx配置文件由指令和指令块组成:
指令: 一个简单的指令由 命令和参数 组成。指令的命令和参数使用空格隔开,使用分号结尾。
指令块: 一个指令块包含很多简单的指令。同时,指令块不再使用分号结尾,而是使用大括号{和}包裹起来。
关系: 指令块内包含很多指令, 指令块通常被称为环境(例如: events, http, server, location[定位]等环境), 放置在 环境之外的指令被认为是位于主环境中的,events环境和http环境也是放置在主环境中的,而server环境放置在http环境里面,location环境放置在server环境里面。
配置文件中,使用 `#` 号键注释。

server环境:

在配置文件中添加一个server配置便代表一个服务功能,或说服务器。该服务器有特定的监听端口,名称。多个server环境互不影响。一个Nginx服务器中可以配置多个服务器,例如:
1.1 静态服务器,用于html静态网页的浏览。
1.2 代理服务器,用于转发请求至其他服务器,并将响应回传给客户端。
1.3 邮件服务器,用于转发邮件。

例如:

#主环境
simple_directives1 params1; #简单指令
simple_directives2 params2; #简单指令
simple_directives3 params3; #简单指令

http { #http环境
    server { #server环境
        location { #location环境
            simple_directives4 params4; #简单指令
            simple_directives5 params5; #简单指令
            simple_directives6 params6; #简单指令
        }
    }
}
events { #events环境
}

静态服务器环境配置

对外提供的文件(例如:图片,html静态网页,css样式表, js脚本等文件)的网站服务器是nginx中非常重要的一部分。
下面进行一个实验,根据请求,访问放置在本地目录/data/www/和/data/images下的文件。
这个实验将编辑nginx的配置文件/etc/nginx/nginx.conf,并设置http环境内的server环境的location环境:
  1. 首先创建/data/www和/data/images目录,放一个index.html文件到/var/www目录,放一些图片到/data/images目录下。
  2. 打开默认配置文件/etc/nginx.conf。默认配置文件已经包含很多被注释的server环境的例子。把所有类似于下面的环境都注释掉,并添加一个如下所示的新的环境:
http {
    server {

    }
}
3. 通常来说,一个配置文件可能包含多个server块,这些server块由监听端口port和名称servername区分开来。一旦nginx决定哪个server块处理请求,它会根据server中定义的location块的参数测试uri。所以在上面定义的http->server块中添加localtion块。如下所示:
location / {
    root /data/www;
}
这个location块指定”/”前缀和请求中的URI进行比较。
当匹配到时,URI就会被添加到root指令的值后面,形成的路径将请求本地文件系统上的文件。
如果有多个匹配的location块,nginx选择一个最长的前缀。
上面的例子中的前缀最短,长度只有1,所以只有在找不到任何location匹配的时候才会使用这个location。
  1. 添加第二个location块
    location /images/ {
        root /data;
    }

这个location(定位)块将匹配URI请求中的 /images/(这个URI同样匹配 [location /]块, 但是这个请求太短了)。
最终的配置为:

http {
    server {
        # /data/www
        location / {
            root /data/www;
        }
        # /data/images
        location /images/ {
            root /data;
        }
    }
}
这是一个已经可以正常运行的配置。该配置下的nginx服务器监听端口80,可以通过http://localhost/ 访问本地的/data/www/目录下的index.html文件。
  1. 重新加载配置:
    nginx -s reload
提示:当nginx没有按预期执行,可以尝试在/user/local/nginx/logs/或者/var/log/nginx/目录下的access.log 和error.log中文件中查找原因

建立一个简单的代理服务器

nginx服务器最频繁使用的功能之一是代理服务。这表示当nginx服务器接受到一个请求时,
会将请求传递给代理服务器后,获取代理服务器的响应,并回送给客户端。
接下来我们给Nginx配置一个最简单的代理服务。该配置下的nginx提供图片或者文件的请求的
服务,将其他请求发送给代理服务器。下面这个例子中,两个服务都定义在一个Nginx服务器上。

  1. 配置一个服务器。
server {
    listen 8080;
    root /data/upl;

    location / {
    }
}
这个server环境配置了一个监听8080端口,并将所有请求映射到本地目录/data/upl下的服务器。

注意:这个root指令并不在location中。当server环境下的location被选中为一个请求服务,
并且这个location并不包含自己的root指令时,使用server环境中的root代替。

2. 创建/data/upl目录,并在其中放置一个index.html文件。
3. 使用上一节中的服务器配置,修改并添加下面的配置,使其成为代理服务器配置。

server {
    location / {
        proxy_pass http://localhost:8080
    }
    location /images/ {
        root /data;
    }
}
  1. 接下来我们修改上面server环境中的第二个location配置。当前,这个location配置映射请求中的 /images/ 前缀为 /data/images/ 目录。现在我们修改它,使他匹配 一个请求各类图片(后缀名不同)的请求。
    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }

这个location环境的参数是一个匹配所有以 .git, .jpg 或 .png 结尾的URI表达式。
正则表达式应该领先于 ~ 符号。对应的请求将被映射到 /data/images/ 目录。
当nginx选择一个location环境服务一个请求时,它首先检查所有location环境的指定前缀,
记住其中最长的前缀,并使用正则表达式检验请求是否和前缀匹配。
如果匹配,nginx将选择这个location环境,否则nginx将选择上一个记住的location环境,以此循环。
直到寻找到匹配的Location环境。

  1. 代理服务的最终配置如下所示:
server {
    location / {
        proxy_pass http://localhost:8080;
    }
    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}
这个服务将会过滤所有以 .gif, .jpg 或 .png 结尾的请求,将其映射到目录 /data/images/ 目录下。并将所有其他的请求转送到上面配置的代理服务器。
  1. nginx -s reload 重新加载配置

    还有更多的用于配置代理链接的指令

设置 FastCGI proxy

nginx可用来将请求发送到FastCGI服务器,FastCGI服务器是由各种编程语言(PHP)和框架构建的运行程序。
几乎所有配置了FastCGI服务器的nginx配置都使用fastcgi_pass指令代替proxy_pass指令,
并且fastcgi_pass指令设置了发送到FastCGI服务的参数。
假设FastCGI服务器可以通过localhost:9000访问。
以上一节的配置为基础,将proxy_pass指令替换为fastcgi_pass指令,并将参数改为 localhost:9000。
在PHP中,SCRIPT_FILENAME参数用于确定脚本的名称,而QUERY_STRING 参数用于传递请求参数。最终的配置:
http {
    server {
        location / {
            fastcgi_pass localhost:9000;
            fastcgi_pass SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass QUERY_STRING $query_string;
        }
        location ~ \.(git|png|jpg) {
            root /data/images;
        }
    }
}
这个配置将建立一个FastCGI服务。这个服务器将通过FastCGI协议发送除了与/images/匹配的 所有之外的所有请求到localhost:9000。

vimwiki静态文件部署

修改配置文件如下所示


http {
    # js文件识别
    include /etc/nginx/mime.types;
    server {
        listen 8080;
        location / {
            root /home/suchp/suchp_familly/yum/log/vimwiki/html;
        }
        location /suchptemplate/ {
            root /home/suchp/suchp_familly/yum/log/vimwiki;
        }
    }
    server {
        # 默认80端口
        location / {
            proxy_pass http://localhost:8080;
        }
        location /images/ {
           root /home/suchp/suchp_familly/yum/log/vimwiki;
        }
    }
}

events {
▸   worker_connections 768;
▸   # multi_accept on;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值