nginx 一个端口配置多个文件路径

背景

因为生产环境生成的不同文件夹的图片url端口均为80,批量更改url端口太麻烦,所以找了下nginx同一个端口配置多个文件路径的办法.

解决办法

    server {
        listen 80;
        server_name 192.168.4.119;

		默认根目录指向/var/www/html
		例: http://192.168.4.119/engstore/1.jpg
		文件存放路径为 /var/www/html/engstore/1.jpg
        location / {
            root   /var/www/html;
            index  index.html index.htm;

            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers X-Requested-With;
            add_header Access-Control-Allow-Methods GET,POST,OPTIONs;
        }

		增加url指向 
		例: http://192.168.4.119/changkou/changkou1/1.jpg
		文件存放路径为 /var/www/html/changkou1/1.jpg
        location /changkou/changkou1 {
            alias /var/www/html/changkou1;
        }
        
        alias可以存在多个,这样同一个80端口就可以路由到多个不同的文件夹,下面依次配置即可
        例: http://192.168.4.119/changkou/changkou2/1.jpg
		文件存放路径为 /var/www/html/changkou2/1.jpg
        location /changkou/changkou2 {
            alias /var/www/html/changkou2;
        }

        location ^~/ifsrc/engine1/ {
            proxy_pass http://192.168.4.119:80/;
        }

        access_log off;
    }

nginx 中root和alias的区别

nginx指定文件路径有两种方式root和alias,root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。

先看root的用法

location /request_path/image/ {
    root /local_path/image/;
}

这样配置的结果就是当客户端请求 /request_path/image/cat.png 的时候,
Nginx把请求映射为/local_path/image/request_path/image/cat.png

再看alias的用法

location /request_path/image/ {
    alias /local_path/image/;
}

这时候,当客户端请求 /request_path/image/cat.png 的时候,
Nginx把请求映射为/local_path/image/cat.png

总结: 最大的区别就是,root是拼接location和root指向的目录.而alias则是用alias指向的目录替换location中的路径
root root目录+匹配的url+后面的url
alias alias目录+后面的url

上一篇:Linux命令总结


下一篇:Linux文件和目录删除