nginx搭建图片服务器的过程详解(root和alias的区别)

  

Nginx搭建图片服务器的过程详解

1. 什么是Nginx?

Nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP服务器。 Nginx的目的是为了解决C10k问题。

2. Nginx搭建图片服务器

2.1 安装Nginx

使用apt-get在Ubuntu上安装

sudo apt-get install nginx

安装完成后,Nginx会自动启动,可用以下命令查看进程是否已经启动:

ps -ef | grep nginx

在浏览器中输入服务器的IP地址或域名,可以看到Nginx的默认页面,说明Nginx安装成功。

2.2 配置Nginx

2.2.1 root和alias的区别

在配置静态文件访问时,Nginx中有两种配置方式,分别是root和alias。

1. root

使用root配置时,指定的路径表示的是文件所在的目录,如下:

location /image/ {
    root /data/image;
    index index.html;
}

表示在访问http://example.com/image/路径时,Nginx会将请求的URI转换成请求的文件路径为/data/image/下的文件。

2. alias

使用alias配置时,指定的路径表示的是文件所在的具体路径,如下:

location /image/ {
    alias /data/image/;
    index index.html;
}

表示在访问http://example.com/image/路径时,Nginx会将请求的URI转换成请求的文件路径为/data/image/下的文件。

使用alias配置方式时需要注意的是,路径后面必须加上斜杠。

2.2.2 配置Nginx访问图片

1)在Nginx配置文件中添加以下内容

server {
    listen       80;
    server_name  example.com;

    location /image/ {
        alias /data/image/;
        index index.html;
    }
}

其中,/data/image/为存放图片的路径,/image/为访问路径前缀。

2)重新加载Nginx配置文件

sudo service nginx reload

3)将图片保存到/data/image/路径下,并通过访问http://example.com/image/来访问。

2.3 整合PHP和Nginx

如果需要在PHP代码中访问图片,需要将FastCGI参数中的PATH_INFO关闭,并设置SCRIPT_FILENAMEORIG_PATH_INFO,具体配置如下:

server {
    listen       80;
    server_name  example.com;

    location /image/ {
        alias /data/image/;
        index index.html;

        # 添加php需要的配置
        include        fastcgi_params;
        fastcgi_index  index.php;

        # 关闭PATH_INFO传递
        fastcgi_param  PATH_INFO          "";
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        fastcgi_param  ORIG_PATH_INFO     $fastcgi_path_info;
        fastcgi_pass   unix:/run/php/php7.2-fpm.sock;
    }
}

以上配置将PHP和Nginx整合起来,通过PHP代码访问图片和普通的静态资源访问没有区别。

3. 示例说明

3.1 示例1:使用root配置

location /image/ {
    root /data/image;
    index index.html;
}

若访问http://example.com/image/1.jpg,Nginx会将请求的文件路径解析为/data/image/1.jpg

3.2 示例2:使用alias配置

location /image/ {
    alias /data/image/;
    index index.html;
}

若访问http://example.com/image/1.jpg,Nginx会将请求的文件路径解析为/data/image/1.jpg

相关文章