背景
因为生产环境生成的不同文件夹的图片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