nginx——托管域名的相关操作
使用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
页面。
伪静态
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;
}