带$ host的nginx try_files

时间:2014-01-16 14:02:04

标签: web-services nginx fastcgi

在我的配置中,我使用主机名($ host)作为目录,因此我不需要为配置中的每个域创建一个条目(仅用于开发目的)

一个问题是try_files失败了我尝试了不同的方法,但所有这些都没有成功。

  • try_files html \ $ host $ uri = 404;
  • try_files $ document_root \ $ host $ uri = 404;
  • try_files $ uri = 404;
  • try_files $ document_root \ $ host $ fastcgi_script_name = 404;

    server {
    listen       80;
    server_name  default;
    
    charset UTF-8;
    
    #access_log  logs/host.access.log  main;
    
    # redirect server error pages to the static pages
    error_page  500 502 503 504  /error/50x.html;
    error_page  404 = /error/404.html;
    error_page  403 = /error/403.html;
    location ^~ /error/ {
        internal;
        root   html/default;
    }
    
    location / {
        root   html/$host;
        index  index.php index.html index.htm;
    }
    
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        #try_files html\$host$uri =404;
        #try_files $document_root\$host$uri =404;
        #try_files $uri =404;
        #try_files $document_root\$host$fastcgi_script_name =404;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root\$host$fastcgi_script_name;
        include        fastcgi_params;
    }
    

1 个答案:

答案 0 :(得分:1)

它本身的概念是正确的,但是您将它应用于错误的位置,您应该将其设置为服务器的root,而不是try_files

另外我认为您应该使用$http_host而不是$host,请参阅this answer以了解差异

我不知道为什么你的路径不是绝对的,它们应该以{{1​​}}

开头

我会在您当前发布的配置中添加更改

/