简单的 Nginx 重写导致 404

简单的 Nginx 重写导致 404

我正在尝试在 Nginx 上设置一个简单的重写规则,但无论我做什么,它总是返回 404:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

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

    # Make site accessible from http://localhost/
    server_name site.com;
    access_log off;



    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            rewrite ^/user/(.*)$ /user.php?id=$1 last;
            try_files $uri $uri/ =404;

            # Uncomment to enable naxsi on this location
            # include /etc/nginx/naxsi.rules
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
            root /usr/share/nginx/html;
    }

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
}

我在这里忽略了什么吗?

笔记:

  • 它是一个启用 HTTPS 的站点,并配置了 Cert Bot。
  • 非HTTPS强制转为HTTPS。
  • 这是我使用 Market Place 上的 Digital Ocean 的 LEMP 产品安装的新服务器。

重写规则是:

rewrite ^/user/(.*)$ /user.php?id=$1 last;

这应该导致 site.com/user/abc

但它一直抛出 404。

答案1

我搞砸了,大错特错。意识到上面的配置仅适用于端口 80。即纯 HTTP。我没有意识到 certbot 将 HTTPS 配置放在 sites-available 中的 digitalocean 配置文件的末尾。

愚蠢的我。

相关内容