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

Gok*_*mir 8 virtualhost nginx

我想在我的Ubuntu 10.04 32bit 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
Run Code Online (Sandbox Code Playgroud)

要创建一个nginx虚拟主机:

mkdir -p /var/www/example.com/{public,logs}
sudo nano /etc/nginx/sites-available/example.com
Run Code Online (Sandbox Code Playgroud)

并写了以下内容

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;
     }
}
Run Code Online (Sandbox Code Playgroud)

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

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
sudo /etc/init.d/nginx restart
Run Code Online (Sandbox Code Playgroud)

我将index.html放入/var/www/example.com/public并从浏览器输入www.example.com网址.然后我得到了关注

403 Forbidden
nginx/0.8.53
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我重做

sudo chown -R www-data:www-data /var/www
sudo chmod -R 775 /var/www
Run Code Online (Sandbox Code Playgroud)

但它给出了同样的错误.

和猫/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/*;
}
Run Code Online (Sandbox Code Playgroud)

如果我将index.html放到/ var/www /然后我可以看到html文件,但任何将它放在/var/www/example.com/public下的尝试都会失败.我看了文件和文件夹权限,他们都属于www-data和可读(775)

我该怎么做才能使nginx工作?谢谢

Ska*_*sle 10

403是因为关闭了自动索引.

autoindex off;
Run Code Online (Sandbox Code Playgroud)

需要穿上它,你可以看到dirs

autoindex on;
Run Code Online (Sandbox Code Playgroud)

如果关闭,您可以看到文件但不列出目录.


小智 7

我在Ubuntu 10.04,Nginx和Wordpress上有相同的症状,答案是一个绝望的愚蠢.

如果其他人处于相同的情况....

在我的网站的nginx配置中

location / {
        index  index.html index.htm;
    }
Run Code Online (Sandbox Code Playgroud)

没有index.php

将其添加到列表中可以解决问题


Cyb*_*m0n 5

我想

rewrite ^/(.*) http://example.com/$1 permanent;
不能正常工作.主机仍然是www.example.com没有发生重定向,因为您在日志中出现以下错误行:

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

尝试使用重写行.

另一个版本:你确定,这些线路是否正常工作?

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