A configuration example that supports Thinkphp URL Rewrite under Nginx

  • 2020-05-09 19:58:22
  • OfStack

An overview of the

The Nginx server is now a popular open source Web server and is used in many production environments. Now, most of the time we are using ThinkPHP for projects, but Nginx does not support ThinkPHP's pathinfo mode by default, which requires a definite configuration.

Nginx configuration file


#
# The default server
#
server {
  listen    80 default_server;
  #server_name www.example.com;
  #charset koi8-r;
  #access_log logs/host.access.log main;
  # Load configuration files for the default server block.
  include /etc/nginx/default.d/*.conf;
  #location / {
  #  root  /usr/share/nginx/html;
  #  index index.html index.htm;
  #}
  location / {
 root      /var/www/project_name;
 index index.html index.php;
    if (!-e $request_filename){
      rewrite ^(.*)$ /index.php?s=$1 last;
    }
  }
  error_page 404       /404.html;
  location = /404.html {
    root  /usr/share/nginx/html;
  }
  # redirect server error pages to the static page /50x.html
  #
  error_page  500 502 503 504 /50x.html;
  location = /50x.html {
    root  /usr/share/nginx/html;
  }
  # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  #
  #location ~ \.php$ {
  #  proxy_pass  http://127.0.0.1;
  #}
  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #
  location ~ \.php$ {
    root      /var/www/project_name;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include    fastcgi_params;
  }
  # deny access to .htaccess files, if Apache's document root
  # concurs with nginx's one
  #
  #location ~ /\.ht {
  #  deny all;
  #}
}

conclusion

Make a backup so you can check it later :)


Related articles: