CentOS下Nginx配置笔记(二)PHP以及虚拟主机配置

2008年6月23日 | 标签: , ,

安装好了Nginx,下面就要考虑详细配置了。我需要把我原来运行在apache上的若干个虚拟主机以及ssl站点都迁移到Nginx上来。
在这之前,你可能需要调整你的nginx.conf这个配置文件,修改一下里面的一些必备参数,比如nginx的运行用户等等。

我没有使用默认的配置,而是自己重新写了一份,仅供参考:

  1. user httpd httpd;
  2.  
  3. worker_processes 10;
  4.  
  5. pid /usr/local/nginx/nginx.pid;
  6.  
  7. worker_rlimit_nofile 51200;
  8.  
  9. events
  10. {
  11.  use epoll;
  12.  worker_connections 51200;
  13. }
  14.  
  15. http
  16. {
  17.  include mime.types;
  18.  default_type application/octet-stream;
  19.  log_format main '$remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'
  20.  tcp_nopush on;
  21.  tcp_nodelay off;
  22.  
  23.  keepalive_timeout 60;
  24.  client_header_timeout 3m;
  25.  client_body_timeout 3m;
  26.  send_timeout 3m;
  27.  connection_pool_size 256;
  28.  client_header_buffer_size 1k;
  29.  large_client_header_buffers 4 2k;
  30.  request_pool_size 4k;
  31.  output_buffers 4 32k;
  32.  postpone_output 1460;
  33.  client_max_body_size 10m;
  34.  client_body_buffer_size 256k;
  35.  client_body_temp_path /dev/shm/client_body_temp;
  36.  proxy_temp_path /usr/local/nginx/proxy_temp;
  37.  fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
  38.  
  39.  gzip on;
  40.  gzip_http_version 1.0;
  41.  gzip_comp_level 2;
  42.  gzip_proxied any;
  43.  gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  44.  gzip_min_length 1100;
  45.  gzip_buffers 4 8k;
  46.  
  47.  #和apache类似,Nginx也可以使用include指令包含一系列的配置文件,我将虚拟主机的配置统一放在了
  48.  #/usr/local/nginx/conf/vhosts目录下
  49.  include vhosts/*.conf;
  50.  
  51.  error_log /usr/local/nginx/logs/error.log;
  52.  access_log /usr/local/logs/access.log combined;
  53. }

在/usr/local/nginx/conf目录下新建文件php_fcgi.conf,保存php的fastcgi设置。我的配置文件如下:

  1. fastcgi_pass  127.0.0.1:19000;
  2. fastcgi_index index.php;
  3.  
  4. fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
  5. fastcgi_param  SERVER_SOFTWARE    nginx;
  6. #new ac upload
  7. #fastcgi_pass_request_body off;
  8. #client_body_in_file_only clean;
  9. #fastcgi_param  REQUEST_BODY_FILE  $request_body_file;
  10. #
  11.  
  12. fastcgi_param  QUERY_STRING       $query_string;
  13. fastcgi_param  REQUEST_METHOD     $request_method;
  14. fastcgi_param  CONTENT_TYPE       $content_type;
  15. fastcgi_param  CONTENT_LENGTH     $content_length;
  16.  
  17. fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
  18. fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
  19. fastcgi_param  REQUEST_URI        $request_uri;
  20. fastcgi_param  DOCUMENT_URI       $document_uri;
  21. fastcgi_param  DOCUMENT_ROOT      $document_root;
  22. fastcgi_param  SERVER_PROTOCOL    $server_protocol;
  23.  
  24. fastcgi_param  REMOTE_ADDR        $remote_addr;
  25. fastcgi_param  REMOTE_PORT        $remote_port;
  26. fastcgi_param  SERVER_ADDR        $server_addr;
  27. fastcgi_param  SERVER_PORT        $server_port;
  28. fastcgi_param  SERVER_NAME        $server_name;
  29.  
  30. # PHP only, required if PHP was built with --enable-force-cgi-redirect
  31. fastcgi_param  REDIRECT_STATUS    200;

这里注意第一行fastcgi_pass,里面的ip地址以及端口要与在前面配置的spawn-fcgi里面指定的ip与端口一致,否则Nginx无法将php的请求正确的传递到php的fastcgi守护进程。

配置好了php的fastcgi以后,下面可以进行每一个虚拟主机的配置了,以我的ipbfans.org为例:

  1. server
  2. {
  3.  listen 80;
  4.  server_name www.ipbfans.org ipbfans.org doc.ipbfans.org from1979.cn www.from1979.cn;
  5.  
  6.  index index.php index.html index.htm;
  7.  root /usr/local/nginx/www;
  8.  
  9.  location ~ .*\.php?$
  10.  {
  11.   include php_fcgi.conf;
  12.  }
  13.  
  14.  access_log /usr/local/nginx/logs/ipbfans.org/access.log combined;
  15.  error_log /usr/local/nginx/logs/ipbfans.org/error.log; 
  16. }

如果有多个php的虚拟主机,参照这个配置文件,修改root选项,以及log的保存目录就可以了。

PR: 0

  1. 无聊空间
    2008年8月3日03:12
    引用 | #1

    看起上来好复杂啊