Skip to content

01 简介

Nginx 英文文档中文文档

1. 安装

编写/etc/yum.repo.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

下载:

yum install -y nginx

2. 配置文件结构

Nginx 在配置文件中含有被指令控制的模块。指令分为

  • 简单指令(simple directives):名字与参数使用空格分隔,以分号;结尾
  • 块指令(block directives):用花括号包围。

若块指令含有其他指令,则被称作context

放置在任何 context 外部的配置文件中的指令均被视为位于main contexteventhttp位于main contextserver位于httplocation位于server

3. 提供静态资源服务

下面以/data/{www,images}目录为例。一定不要在 /tmp 下面放置资源,否则 nginx 无法找到文件。

[root@centos7 ~]# mkdir -p /data/{www,images}

然后在/data/www中放一个index.html文件,在/data/images中放入几张图片。

/etc/nginx/conf.d/default.conf全部注释掉,在/etc/nginx/conf.d/static-test.conf中配置:

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

    location /images/ {
       root /data;
    }
}

通常情况下,配置文件会包含多个server块,它们通过块中的服务名字(server_name )和监听的端口(listen)来进行区分。

下面说明一下配置中的意义:

  • location 指定了“/”来匹配请求中 URI ;
  • root 指令则指定了要被添加到 URI 的路径“/data/www”;最终访问资源的路径是两者相加的结果,例如 /data/www + / = /data/www/;
  • location 的匹配遵循最长匹配原则;例如,如果其他所有的 location 块都匹配失败了,那么就会使用“/”这个 location,因为它的长度只有1。

现在,你需要配置SELinux或关闭它,并重新载入配置文件systemctl reload nginx,然后可以访问http://localhost:80/来查看静态内容。

4. 简单的代理服务

Nginx 的一种常用用法是将其设置为代理服务器,这意味着服务器可以接收请求,将请求传递给被代理的服务,然后获取响应它们的响应,然后将其发送给客户端。

/etc/nginx/conf.d/proxy-test.conf

server {
    listen 8080;
    root /data/www;

    location / {
    }
}

注意,root 指令写在了 server context 中,当 location 不包含它自己的 root 时,就这样使用。

/etc/nginx/conf.d/static-test.conf

server {
    location / {
       proxy_pass http://localhost:8080;
    }

    location ~ \.(jpg|png|gif)$ {
       root /data/images;
    }
}

proxy_pass指令将此 location 变成代理服务;用~开头表示这是一个正则表达式,Nginx 会优先匹配正则表达式。

现在,使用80和8080端口都可以访问index.html了,对images的访问仍在80端口。