nginx 部署静态网页
由于发现在 centos 和 ubuntu 上使用 nginx 部署静态网页时发现这两种系统的 nginx 配置有所差异,因此记录这篇博文。🔍
配置文件
安装好 nginx 后,输入命令 nginx -t
可以看到配置文件的路径。
一般将来说,应该位于 /etc/nginx/nginx.conf
。
如果文件格式如下📄
events {
}
http {
server {
}
}
修改 server 中 root 的路径为网站根目录,检查端口号,第一行的启动用户是否正确。
使用 nginx -s reload
重新加载配置后即可生效。🎉
如果 http 中少了 server
部分,而留下例如 include /etc/nginx/sites-enabled/*;
这样的代码。
那么我们需要在其中配置 server 部分。
打开该路径,可以看到提供的一个 default 配置文件,并且为 sites-available
路径中同名文件的软链。
由路径名可以直观的理解到,sites-avaliable
中存放配置文件,sites-enabled
中存放软链来管理网站的启停。
所以在 sites-enabled
中添加配置文件能直接起作用,毕竟 nginx.conf
引用的是 sites-enabled
路径。
通过复制 default 文件进行修改,或者新建文件,完成 server 部分内容即可。
server {
listen 80 default_server;
listen [::]:80 default_server;
root /path/to/site;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
布置多站点
当需要布置多个站点时,在配置文件中定义多个 server 块。给不同的站点分配不同的端口,或者不同的域名。
# 分配不同的域名
server {
listen 80;
server_name site1.com;
}
server {
listen 80;
server_name site2.com;
}
也可以不写在同一个文件中,为每个站点部分单独配置。
/etc/nginx/sites-available/site1.com
/etc/nginx/sites-available/site2.com
二级路径部署多站点
上面使用二级域名部署多站点的方式很简洁,但仍然有一些不方便的地方
比如:需要为多站点配置多个域名解析,配置多个 SSL 证书
下面的两种方式可以将多站点部署为二级路径
使用 location 块
server {
...
location /site1 {
alias /path/to/site1;
index index.html index.htm;
}
location /site2 {
alias /path/to/site2;
index index.html index.htm;
}
}
在使用这种配置时,我发现访问错误路径时,渲染的 404 页面不是各子站点的 404 页面
使用反向代理
server {
...
location /site1 {
proxy_pass http://localhost:8081;
}
location /site2 {
proxy_pass http://localhost:8082;
}
}
server {
listen 8081;
server_name localhost;
location / {
root /path/to/site1;
index index.html;
}
}
server {
listen 8082;
server_name localhost;
location / {
root /path/to/site2;
index index.html;
}
}
References
[1] Qingquan-Li, 使用Nginx部署静态网站(含配置HTTPS)