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)


nginx 部署静态网页
http://guoguo.host/blog/p/6dd90840.html
作者
Guoguo
发布于
2024年2月24日
许可协议