CakePHP and Nginx configuration
所以我的任务是使用 CakePHP 创建一个站点,所以我下载了最新的 2.2.3,我需要在我的本地 nginx 1.2.4 服务器上配置它。
我有
我已经阅读了许多文章和问题,但似乎没有一个能够解决问题。到目前为止,我已经引用了
- 在 nginx 1.0.8 子目录上运行的 Cakephp 应用程序问题
- http://book.cakephp.org/2.0/en/installation/advanced-installation.html#pretty-urls-on-nginx
- http://www.littlehart.net/atthekeyboard/2007/09/14/configuring-cakephp-to-work-with-nginx/
- http://www.littlehart.net/atthekeyboard/2009/01/25/cakephp-nginx-configuration-update/
- http://kvz.io/blog/2010/02/24/cakephp-and-nginx/
我的 css 链接看起来像这样,
我需要弄清楚为什么 Nginx 不让我的 CSS 加载。到目前为止,我只能发现它将
目前我的 nginx 配置服务器块如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | server { server_name example.com; root /Users/david/Sites/example.com/app/webroot/; access_log /usr/local/var/log/nginx/example.com.access.log; error_log /usr/local/var/log/nginx/example.com.error.log; listen 80; rewrite_log on; # rewrite rules for cakephp location / { index index.php index.html; # If the file exists as a static file serve it # directly without running all # the other rewite tests on it if (-f $request_filename) { break; } if (!-f $request_filename) { rewrite ^(.+)$ /index.php?url=$1 last; break; } } location ~* \\favicon.ico$ { expires 6m; } location ~ ^/img/ { expires 7d; } location ~ \\.php$ { fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SERVER_NAME example.com; include fastcgi_params; } location ~ /\\.ht { deny all; } } |
FastCGIParams
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $request_filename; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; |
所以我已经设法找出问题所在。原来它是
中的一个变量
如果您将
我的 nginx 配置如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | server { listen 127.0.0.1:80; server_name example.com.ukwm157; root /Users/david/Sites/example.com/app/webroot; index index.php index.html; log_not_found off; charset utf-8; access_log /usr/local/var/log/nginx/example.com.access.log main; error_log /usr/local/var/log/nginx/example.com.error.log; location / { index index.php index.html index.htm; if (-f $request_filename) { break; } if (-d $request_filename) { break; } rewrite ^(.+)$ /index.php?q=$1 last; } # Static files. # Set expire headers, Turn off access log location ~* \\favicon.ico$ { access_log off; expires 1d; add_header Cache-Control public; } location ~ ^/(img|cjs|ccss)/ { access_log off; expires 7d; add_header Cache-Control public; } # Deny access to .htaccess files, # git & svn repositories, etc location ~ /(\\.ht|\\.git|\\.svn) { deny all; } location ~ .php?$ { #if (!-e $document_root$document_uri){return 404;} fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
以下配置适用于 Cake 2.x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | server { listen 80; server_name myprojecy.xyz; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { root /var/www/html/project-forlder/app/webroot; index index.php index.html index.htm; if (-f $request_filename) { break; } if (-d $request_filename) { break; } rewrite ^(.+)$ /index.php?q=$1 last; } location ~ .*\\.php[345]?$ { include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/project-forlder/app/webroot$fastcgi_script_name; } |
}
我认为问题在于您使用的是文件路径而不是 URL。