如何使 Nginx 虚拟主机工作?(目前出现 403 Forbidden 错误)

如何使 Nginx 虚拟主机工作?(目前出现 403 Forbidden 错误)

我想在我的 Ubuntu 10.04 32 位 Linode VPS 上运行 nginx。

sudo chown -R www-data:www-data /var/www
sudo chmod -R 775 /var/www

sudo add-apt-repository ppa:nginx/development
sudo apt-get update
sudo apt-get install nginx

要创建 nginx 虚拟主机:

mkdir -p /var/www/example.com/{public,logs}
sudo nano /etc/nginx/sites-available/example.com

并写道

server {
     listen   80;
     server_name  www.example.com;
     rewrite ^/(.*) http://example.com/$1 permanent;
     }

server {
     listen   80;
     server_name example.com;

     access_log /var/www/example.com/logs/access.log;
     error_log /var/www/example.com/logs/error.log;

     location / {
          root   /var/www/example.com/public/;
          index  index.html;
          }
}

然后我启用了虚拟主机 example.com

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

我把 index.html 放到/var/www/example.com/public浏览器中,然后输入 example.com URL。然后我得到了以下结果

403 Forbidden
nginx/0.8.53

tail /var/log/nginx/error.log出现以下错误

*38 directory index of "/var/www/" is forbidden, client: 88.224.1.128, server: localhost, request: "GET / HTTP/1.1", host: www.example.com

我重做

sudo chown -R www-data:www-data /var/www
sudo chmod -R 775 /var/www

但它给出了同样的错误。

和 cat /etc/nginx/nginx.cnf

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    # multi_accept on;
}
http {
    include       /etc/nginx/mime.types;

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

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;
    # As per: http://wiki.nginx.org/NginxHttpGzipModule#gzip_disable starting
    # with 0.7.63
    gzip_disable     "msie6";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

如果我将 index.html 放到 /var/www/,那么我可以看到 html 文件,但将其放到 /var/www/example.com/public 下的任何尝试都会失败。我查看了文件和文件夹权限,它们都没有问题,都属于 www-data 并且可读 (775)

我该怎么做才能让 nginx 正常工作?谢谢

答案1

sites-enabled 目录中可能还有另一个文件,带有服务器名称通配符?我猜这个配置有一个根目录“/var/www”?

答案2

您是否重新加载了配置文件?Nginx 不会像 Apache 使用 htaccess 那样在每次加载时解析配置文件,您必须主动向其发送重新加载 (HUP) 命令。

答案3

在 Ubuntu 上,重新加载命令将是

/etc/init.d/nginx reload

如果通过 apt 安装,如果没有,则尝试

/path/to/nginx reload

相关内容