所以我想在nginx上安装一个新的drupal 6站点。 我已经成功地设置了conf文件和db。 当我尝试访问mysite.com以便我可以按照一步一步安装指南,它正确地redirect到mysite.com/install.php但返回403禁止的错误。
在我的conf文件中,我尝试将我的IP添加到允许的IP列表中:
location = /install.php { allow 127.0.0.1; allow my_ip_address; deny all; }
但是,当我尝试访问mysite.com/install.php ,浏览器下载文件而不是运行它。 我该怎么办?
我可以使用drush来安装一个新的站点,但我想使用drupal的install.php文件(向朋友展示它是如何完成的)。
谢谢。
server { server_name www.mysite.com; return 301 $scheme://mysite.com$request_uri; } # server domain return. server { server_name mysite.com; root /var/www/mysite.com; index index.html index.htm index.php; access_log /var/log/nginx/mysite.access.log; error_log /var/log/nginx/mysite.error.log; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } # For drush location = /backup { deny all; } # Prevent user from accessing settings.php directly location ~ ^/sites/[^/]+/settings.php$ { deny all; } ## Replicate the Apache <FilesMatch> directive of Drupal standard ## .htaccess. Disable access to any code files. Return a 404 to curtail ## information disclosure. Hide also the text files. location ~* ^(?:.+\.(?:htaccess|make|txt|log|engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(?:\.php)?|xtmpl)|code-style\.pl|/Entries.*|/Repository|/Root|/Tag|/Template)$ { return 404; } location ~ \..*/.*\.php$ { return 403; } location / { # This is cool because no php is touched for static content try_files $uri @rewrite; } location @rewrite { # Some modules enforce no slash (/) at the end of the URL # Else this rewrite block wouldn't be needed (GlobalRedirect) #rewrite ^/(.*)$ /index.php?q=$1&$args; rewrite ^ /index.php last; } # Use an SSH tunnel to access those pages. They shouldn't be visible to # external peeping eyes. location = /install.php { allow 127.0.0.1; deny all; } location = /update.php { allow 127.0.0.1; deny all; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; #fastcgi_pass unix:/var/run/php5-cgi/php5.sock; fastcgi_pass unix:/var/run/php5-fpm.sock; } ## Drupal 7 generated image handling, ie, imagecache in core. See: ## https://drupal.org/node/371374 location ~* /sites/.*/files/styles/ { access_log off; expires 30d; try_files $uri @rewrite; } # Fighting with ImageCache? This little gem is amazing. location ~ ^/sites/.*/files/imagecache/ { try_files $uri @rewrite; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; } }
您的显式location = /install.php覆盖任何其他location指令。 除了在极less数情况下,nginx只能将请求匹配到单个location 。
因此,你的请求被匹配到location = /install.php 。 但是,这并不包含任何将请求发送到php-fpm的指令,因此将其作为静态文件处理并发送到浏览器。
这个location根本没有什么意义。 在完成安装或升级之后, 您将删除install.php文件 。 所以我只是完全删除这些location 。