使用Nginx Web服务器时,服务器块(类似于Apache中的虚拟主机)可用于封装配置详细信息,并在一台服务器中托管多个域。我们将建立一个名为example.com的域,但我们可以用自己的域名替换它。

前提准备

创建一个对应的目录

sudo mkdir -p /var/www/example.com/html

使用$USER环境变量分配目录的所有权:

sudo chown -R $USER:$USER /var/www/example.com/html
sudo chmod -R 755 /var/www/example.com

创建一个服务器块

sudo nano /etc/nginx/sites-available/example.com

将以下内容copy进文件:

server {
        listen 80;
        listen [::]:80;
        root /var/www/example.com/html;
        index index.html index.htm index.nginx-debian.html;
        server_name example.com www.example.com;
        location / {
                try_files $uri $uri/ =404;
        }
}

sites-enabled目录新建一个链接,让 Nginx 在启动过程中会读取这个目录:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

为避免可能由于添加其他服务器名称而引起的哈希存储区内存问题,有必要调整/etc/nginx/nginx.conf文件中的单个值。
打开文件:

sudo nano /etc/nginx/nginx.conf

找到server_names_hash_bucket_size指令并删除#符号:

...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

完成后保存并关闭文件。

测试以确保我们在 Nginx 文件中的改动没有任何问题:

sudo nginx -t

如果没有任何问题,请重新启动 Nginx:

sudo systemctl restart nginx

Nginx现在已经可以按照刚刚我们配置的方式来工作啦。当用户通过http://example.com域名访问我们的服务器时,Nginx会将它指向我们刚刚创建的Html页面。

标签: none

仅有一条评论

  1. 伪静态
    if (-f $request_filename/index.html){
    rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
    rewrite (.*) $1/index.php;
    }
    if (!-f $request_filename){
    rewrite (.*) /index.php;
    }

添加新评论