0%

Nginx的一点点小折腾

说明

对于这样某个url来说,假设其站点在主机上的/var/www/目录下,若该目录下的结构是这样(图示结构为本站的目录结构):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
├─2016
│ ├─03
│ │ ├─25
│ │ │ └─hello-world
│ │ ├─26
│ │ │ └─First-day
│ │ └─28
│ │ └─ubuntu-touchpad
│ ├─04
│ │ ├─03
│ │ │ └─Lake-Counting
│ │ └─26
│ │ └─start
│ ├─07
│ │ └─03
│ │ └─Minecraft-server
│ │ └─images
│ ├─10
│ │ └─20
│ │ └─Aria2c
│ ├─11
│ │ ├─25
│ │ │ └─High-Speed-transfer
│ │ └─26
│ │ ├─4-四元数与欧拉角
│ │ └─NOIP2016
│ └─12
│ ├─05
│ │ └─NOIP2016更改
│ ├─09
│ │ └─Dynamic-programming
│ ├─23
│ │ └─zheyilu
│ └─31
│ └─such-a-program
├─2017
│ └─01
│ ├─06
│ │ └─who-am-I
│ ├─08
│ │ ├─error-in-Linux-when-use-C-language
│ │ └─install-node-js-on-a-Linux-OS
│ ├─09
│ │ └─install-node-js-on-raspberry-3B
│ ├─10
│ │ └─Ferryman
│ ├─12
│ │ └─replace-background-image-of-ubuntu-when-login-in-to-it
│ ├─16
│ │ └─home
│ ├─19
│ │ └─NOIP-2015-Message
│ └─25
│ └─use-proxy-in-terminal
├─about
├─archives
│ ├─2016
│ │ ├─03
│ │ ├─04
│ │ ├─07
│ │ ├─10
│ │ ├─11
│ │ ├─12
│ │ └─page
│ │ └─2
│ ├─2017
│ │ └─01
│ └─page
│ ├─2
│ └─3
├─css
├─images
├─js
│ └─src
│ └─schemes
├─lib
│ ├─algolia-instant-search
│ ├─fancybox
│ │ └─source
│ │ └─helpers
│ ├─fastclick
│ │ └─lib
│ ├─font-awesome
│ │ ├─css
│ │ └─fonts
│ ├─jquery
│ ├─jquery_lazyload
│ ├─ua-parser-js
│ │ └─dist
│ └─velocity
├─page
│ ├─2
│ └─3
└─tags
├─C
├─Games
├─hexo
├─Linux
├─node-js
├─NOIP
├─raspberry
├─technology
├─tecnology
├─Ubuntu
├─ubuntu-touchpad-触控板调节
├─wanwan
├─乱七八糟
├─动态规划
├─学术
├─小窍门
├─文学
├─深度优先搜索
├─竞赛
└─算法

此时,若是直接访问hushuangpu.xyz/tags看到的是站点目录下的tags文件夹内的内容。若是想要访问hushuangpu.xyz/src,且src指向的内容不在站点目录里面,该怎么弄?于是有了此文。

实战

这里用Nginx实现,只需要更改nginx的配置文件就好,若无意外,正常的nginx的配置文件内容应该如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
user nginx;                                                                 
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}

http {
log_format main '$remote_addr - $remote_user [$time_local] "$request"
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
root /usr/share/nginx/html;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}

我的站点文件全部放在/usr/share/nginx/html目录里面了,然后我想让hushuangpu.xyz/src指向另外一个目录,比如/var/resource,在配置文件内添加如下内容:

1
2
3
4
5
6
7
8
charset utf-8;#指定文件名编码,防止中文乱码,若是在Windows上使用,应该将其utf-8改成gbk
client_max_body_size 4G;#限制单个最大文件的体积
location /src {#这行的src就是hushuangpu.xyz/src里面的src
alias /usr/resource/;#更改目录指向
autoindex on;#建立目录
autoindex_exact_size off;#显示文件体积
autoindex_localtime on;显示时间
}

本站实现示范如下:

其它说明

在上文中,代码

1
2
3
4
5
6
7
8
charset utf-8;#指定文件名编码,防止中文乱码,若是在Windows上使用,应该将其utf-8改成gbk
client_max_body_size 4G;#限制单个最大文件的体积
location /src {#这行的src就是hushuangpu.xyz/src里面的src
alias /usr/resource/;#更改目录指向
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}

其实是在/usr/resource建立了以个静态文件服务器,若是要当成web服务器
则要改成这样

1
2
3
4
5
charset utf-8;#指定文件名编码,防止中文乱码,若是在Windows上使用,应该将其utf-8改成gbk
client_max_body_size 4G;#限制单个最大文件的体积
location /src {#这行的src就是hushuangpu.xyz/src里面的src
alias /usr/resource/;#更改目录指向
}

生命重在折腾