CentOS下Nginx配置笔记(二)PHP以及虚拟主机配置
安装好了Nginx,下面就要考虑详细配置了。我需要把我原来运行在apache上的若干个虚拟主机以及ssl站点都迁移到Nginx上来。
在这之前,你可能需要调整你的nginx.conf这个配置文件,修改一下里面的一些必备参数,比如nginx的运行用户等等。
我没有使用默认的配置,而是自己重新写了一份,仅供参考:
- user httpd httpd;
- worker_processes 10;
- pid /usr/local/nginx/nginx.pid;
- worker_rlimit_nofile 51200;
- events
- {
- use epoll;
- worker_connections 51200;
- }
- 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'
- tcp_nopush on;
- tcp_nodelay off;
- keepalive_timeout 60;
- client_header_timeout 3m;
- client_body_timeout 3m;
- send_timeout 3m;
- connection_pool_size 256;
- client_header_buffer_size 1k;
- large_client_header_buffers 4 2k;
- request_pool_size 4k;
- output_buffers 4 32k;
- postpone_output 1460;
- client_max_body_size 10m;
- client_body_buffer_size 256k;
- client_body_temp_path /dev/shm/client_body_temp;
- proxy_temp_path /usr/local/nginx/proxy_temp;
- fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
- gzip on;
- gzip_http_version 1.0;
- gzip_comp_level 2;
- gzip_proxied any;
- gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
- gzip_min_length 1100;
- gzip_buffers 4 8k;
- #和apache类似,Nginx也可以使用include指令包含一系列的配置文件,我将虚拟主机的配置统一放在了
- #/usr/local/nginx/conf/vhosts目录下
- include vhosts/*.conf;
- error_log /usr/local/nginx/logs/error.log;
- access_log /usr/local/logs/access.log combined;
- }
在/usr/local/nginx/conf目录下新建文件php_fcgi.conf,保存php的fastcgi设置。我的配置文件如下:
- fastcgi_pass 127.0.0.1:19000;
- fastcgi_index index.php;
- fastcgi_param GATEWAY_INTERFACE CGI/1.1;
- fastcgi_param SERVER_SOFTWARE nginx;
- #new ac upload
- #fastcgi_pass_request_body off;
- #client_body_in_file_only clean;
- #fastcgi_param REQUEST_BODY_FILE $request_body_file;
- #
- 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_FILENAME $document_root$fastcgi_script_name;
- fastcgi_param SCRIPT_NAME $fastcgi_script_name;
- 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 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_pass,里面的ip地址以及端口要与在前面配置的spawn-fcgi里面指定的ip与端口一致,否则Nginx无法将php的请求正确的传递到php的fastcgi守护进程。
配置好了php的fastcgi以后,下面可以进行每一个虚拟主机的配置了,以我的ipbfans.org为例:
- server
- {
- listen 80;
- server_name www.ipbfans.org ipbfans.org doc.ipbfans.org from1979.cn www.from1979.cn;
- index index.php index.html index.htm;
- root /usr/local/nginx/www;
- location ~ .*\.php?$
- {
- include php_fcgi.conf;
- }
- access_log /usr/local/nginx/logs/ipbfans.org/access.log combined;
- error_log /usr/local/nginx/logs/ipbfans.org/error.log;
- }
如果有多个php的虚拟主机,参照这个配置文件,修改root选项,以及log的保存目录就可以了。
PR: 0

看起上来好复杂啊