让 nginx 支持thinkphp 的 PATH_INFO 和 URL Rewrite模式支持 推荐
2013-07-25 11:28
639 查看
情况简介:
我们的网站是thinkphp框架开发的,之前一直在apache+php下面运行.很想换到nginx上试试,经过百般折腾无果.无奈去官方发现是nginx不支持thinkphp的 PATH_INFO 和 URL Rewrite模式,不过还好官方也给出了相应的解决办法。下面就是实验的过程全记录。
实验环境介绍:
系统 : centos 6.4 x86_64
ip : 192.168.80.141
环境 : lnmp
版本 : nginx-1.4.1 , PHP-5.4.0 ,mysql-5.1.62 ,thinkphp 3.0
至于lnmp 环境的搭建在这里就不多说了,网上很多. 下面在介绍一下我的目录存放的介绍。这个地方要仔细看 因为跟nginx 里面的配置有很多的联系。
nginx : /usr/local/nginx/
php : /usr/local/php/
网站根目录: /usr/local/nginx/html/
------------------开始配置nginx支持thinkphp----------------------------
原始配置内容:
修改后支持thinkphp的内容:
有个小的问题,nginx的状态查看页面。即:http://IP/status 在配置好了支持thinkphp之后,竟然无法正常工作了,所以我把它单独建立了一个虚拟机来解决。主机名s.abc.org
错误的status
再来个搞定之后的测试截图:
--------------------祝各位早日搞定----------------------------------
我们的网站是thinkphp框架开发的,之前一直在apache+php下面运行.很想换到nginx上试试,经过百般折腾无果.无奈去官方发现是nginx不支持thinkphp的 PATH_INFO 和 URL Rewrite模式,不过还好官方也给出了相应的解决办法。下面就是实验的过程全记录。
实验环境介绍:
系统 : centos 6.4 x86_64
ip : 192.168.80.141
环境 : lnmp
版本 : nginx-1.4.1 , PHP-5.4.0 ,mysql-5.1.62 ,thinkphp 3.0
至于lnmp 环境的搭建在这里就不多说了,网上很多. 下面在介绍一下我的目录存放的介绍。这个地方要仔细看 因为跟nginx 里面的配置有很多的联系。
nginx : /usr/local/nginx/
php : /usr/local/php/
网站根目录: /usr/local/nginx/html/
------------------开始配置nginx支持thinkphp----------------------------
原始配置内容:
user nobody; worker_processes 1; error_log logs/error.log info; pid logs/nginx.pid; events { use epoll; worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; access_log logs/host.access.log main; location / { root html; index index.php index.html index.htm; } location /status { stub_status on; access_log on; allow 192.168.80.0/24; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; include fastcgi_params; } }-----------------------------------------------------------------------------------
修改后支持thinkphp的内容:
user nobody; worker_processes 1; error_log logs/error.log info; pid logs/nginx.pid; events { use epoll; worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; sendfile on; keepalive_timeout 65; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; server { listen 80; server_name localhost; location / { root html; index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php { #去掉后面的$ root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; #增加这一句 fastcgi_param PATH_INFO $fastcgi_path_info; #还有这一句 #####fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; # 这个是在配置nginx+php整合的时候就改好的$前面的是网站的主目录 include fastcgi_params; } if (!-e $request_filename) { #地址作为将参数rewrite到index.php上。 rewrite ^/(.*)$ /index.php/$1; # 若是子目录则使用下面这句,将subdir改成目录名称即可。 # rewrite ^/subdir/(.*)$ /subdir/index.php/$1; # } } } server { listen 80; server_name s.abc.org; location / { root html; index index.html index.htm; } location /status { stub_status on; access_log on; allow 192.168.80.0/24; } } }-----------------至此nginx已经支持了thinkphp---------------------------------
有个小的问题,nginx的状态查看页面。即:http://IP/status 在配置好了支持thinkphp之后,竟然无法正常工作了,所以我把它单独建立了一个虚拟机来解决。主机名s.abc.org
错误的status
再来个搞定之后的测试截图:
--------------------祝各位早日搞定----------------------------------
相关文章推荐
- thinkphp nginx pathinfo模式支持
- 最新完美解决nginx支持thinkphp的PATH_INFO,URL格式的问题
- Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
- nginx支持CI框架PATH_INFO模式
- UPUPW Nginx ThinkPHP pathinfo模式配置
- Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
- [转]Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
- Nginx下配置ThinkPHP的URL Rewrite模式和pathinfo模式支持
- 【Nginx重写】下支持ThinkPHP的Pathinfo和URl Rewrite模式
- windows下修改nginx pathinfo支持、thinkphp在nginx环境下隐藏index.php
- 配置nginx支持path_info模式
- Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
- Nginx下支持ThinkPHP的Pathinfo和URl Rewrite模式
- Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
- [省了index.php看这] Nginx下支持ThinkPHP的Pathinfo和URl Rewrite模式
- Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持
- nginx解决不支持path_info模式方案
- Nginx下支持ThinkPHP的Pathinfo和URl Rewrite模式
- Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
- Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持