Nginx 未加载索引

Nginx 未加载索引

我正在尝试在我的 apache 服务器上的 nginx 和 php 文件上提供所有静态内容。

服务器 { 监听 80;

    root /var/www/tb/;
    index index.php index.html index.htm;

    server_name  37.*;

    location / {
            try_files $uri $uri/ /index.php @forward;
            #limit_req zone=one burst=1 nodelay;
    }


    location @forward {

            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://myip
    }

不幸的是,当我导航到我的网站的网址时,显示的是目录索引而不是 index.php(如果我禁用自动列表,则显示 403。

如果我在 URL 后面附加http://我的网址/index它确实有效。但是http://我的网址才不是。

答案1

该指令:

try_files $uri $uri/ /index.php @forward;

将要:

  1. 检查 URL 是否为文件,如果是,则提供该文件
  2. 检查 URL 是否为目录,如果是,则提供目录索引 ( index.php index.html index.htm)
  3. 检查文件是否/var/www/tb/index.php存在,如果存在则使用
  4. 最后,代理远程服务器

步骤 2 和 3 不需要,因此只需将其删除。这样,如果请求准确映射到文件,则提供该请求,否则,请求将由位置@forward块处理。

因此,基于问题的完整配置是:

root /var/www/tb/;
server_name  37.*;

location / {
        try_files $uri @forward;
}

location @forward {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://myip
}

index请注意,由于该指令不会被使用,因此不需要定义它。

相关内容