nginx安装 Nginx只是web服务器,配合php技术实现的fastcgi来提高性能。 1、安装rewrite模块支持包pcre库: # tar zxvf pcre-7.8.tar.gz # cd pcre-7.8/ # ./configure # make && make install cd ../ 2、安装Nginx 说明:创建www用户组及www用户,如果之前php-fpm没有创建,这里要创建。 # /usr/sbin/groupadd www # /usr/sbin/useradd -g www www # tar zxvf nginx-0.7.59.tar.gz # cd nginx-0.7.59/ #./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx configuration prefix: "/usr/local/nginx/conf" nginx configuration file: "/usr/local/nginx/conf/nginx.conf" nginx pid file: "/usr/local/nginx/logs/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" # make && make install # cd ../ 3.Nginx 安装后只有一个程序文件,本身并不提供各种管理程序,它是使用参数和系统信号机制对 Nginx 进程本身进行控制的。 Nginx 的参数包括有如下几个: -c <path_to_config>:使用指定的配置文件而不是 conf 目录下的 nginx.conf 。 -t:测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否有语法错误。 -v:显示 nginx 版本号。 -V:显示 nginx 的版本号以及编译环境信息以及编译时的参数。 例如我们要测试某个配置文件是否书写正确,我们可以使用以下命令 sbin/nginx -t -c conf/nginx.conf nginx配置 1.在/usr/local/nginx/conf/目录中创建nginx.conf文件: rm -f /usr/local/nginx/conf/nginx.conf vi /usr/local/nginx/conf/nginx.conf ======================================= nginx.conf才是nginx web服务器的配置文件 ======================================= user www www; /*启动nginx服务的用户与组*/ worker_processes 8; /*启动nginx服务的工作进程*/ error_log logs/nginx_error.log crit; /*错误日志,以及等级*/ pid /usr/local/nginx/nginx.pid; /*nginx服务进程PID*/ worker_rlimit_nofile 51200; events { use epoll; /*工作模式*/ worker_connections 51200; /*每进程允许最大的同时连接数*/ } http { include mime.types; default_type application/octet-stream; #charset gb2312; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; 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; #limit_zone crawler $binary_remote_addr 10m; server { listen 80; /*监听端口*/ server_name localhost; /*服务器名称*/ index index.html index.htm index.php; /*缺省主页名称*/ root /usr/local/nginx/html; /*网站根目录,也可以采用下面内容*/ #也可以采用相对路径,下面注释部分*/ #location / { # root html; # index index.html index.htm; # } #limit_conn crawler 20; #通过FastCGI方式支持PHP,php页面由fastcgi代理处理,这也是反向代理的一个应用,这里可以是jsp/asp等脚本。 location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; /*fastcgi监听端口*/ fastcgi_index index.php; include fcgi.conf; /*fastcgi配置文件,修改为以下内容*/ } #对于某一类型的文件,设置过期时间,静态的页面通常设置长一点。 #静态文件,nginx自己处理 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ { expires 30d; } #日志的格式 log_format access '$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 access; } } 说明:以上配置文件只是基本配置文件,要实现其它功能的话,需要在此基础上进行修改。 2.在/usr/local/nginx/conf/目录中创建fcgi.conf文件: 说明:可以直接粘贴以下内容。 vi /usr/local/nginx/conf/fcgi.conf fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; 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; nginx启动与管理 1.启动nginx /usr/local/nginx/sbin/nginx 2.测试nginx配置文件 修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确: # /usr/local/nginx/sbin/nginx -t 如果屏幕显示以下两行信息,说明配置文件正确: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully 3.查看Nginx主进程号 ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}' 屏幕显示的即为Nginx主进程号,例如: 6302 这时,执行以下命令即可使修改过的Nginx配置文件生效: kill -HUP 6302 或者无需这么麻烦,找到Nginx的Pid文件: kill -HUP `cat /usr/local/nginx/logs/nginx.pid` 4.配置开机自动启动Nginx + PHP vi /etc/rc.local 加入以下内容: ulimit -SHn 51200 /usr/local/php/sbin/php-fpm start /usr/local/nginx/sbin/nginx 5.测试nginx 应事先准备 vi /usr/local/nginx/html/test.php <? phpinfo(); ?> (1)http://192.168.129.21 (2)http://192.168.129.21/test.php nginx配置总结 nginx对我来说是一个新的内容,安装的包比较多,在经过了一段时间 对nginx的了解之后,才真正的配置成功,本文只是实现了一个最基本的功能,对于nginx高性能的使用在配置文件中没有实现。在以后的学习过程中还需 要更深入的去了解,比如:反向代理,以及nginx+fastcgi分步式的环境配置。 Nginx基本配置管理 nginx配置基础 1、正则表达式匹配 ~ 区分大小写匹配 ~* 不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 ^ 以什么开头的匹配 $ 以什么结尾的匹配 \ 转义字符。可以转. * ?等 * 代表任意字符 2、文件及目录匹配 -f和!-f用来判断是否存在文件 -d和!-d用来判断是否存在目录 -e和!-e用来判断是否存在文件或目录 -x和!-x用来判断文件是否可执行 例: location = / #匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配 location ^~ /images/ { # 匹配任何已/images/开头的任何查询并且停止搜索。任何正则表达式将不会被测试。 location ~* \.(gif|jpg|jpeg)$ { # 匹配任何已.gif、.jpg 或 .jpeg 结尾的请求 3、一些可用的全局变量 $args $content_length $content_type $document_root $document_uri $host $http_user_agent $http_cookie $limit_rate $request_body_file $request_method $remote_addr $remote_port $remote_user $request_filename $request_uri $query_string $scheme $server_protocol $server_addr $server_name $server_port $uri nginx切割日志 1、创建脚本/usr/local/nginx/sbin/cut_nginx_log.sh,输入以下内容: #!/bin/bash # This script run at 00:00 # The Nginx logs path logs_path="/usr/local/nginx/logs/" mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/ mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` 2、设置crontab,每天凌晨00:00切割nginx访问日志 crontab -e 输入以下内容: 00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh nginx状态监控 在nginx.conf根目录下加入以下内容,过程如下: 1.修改配置文件 vi /usr/local/nginx/conf/nginx.conf #以下面加入以下内容 location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; } 2.重启nginx服务 (1)kill -HUP `cat /usr/local/nginx/logs/nginx.pid` (2)如果不行的话,先杀,再启动 3.测试 http://192.168.129.21/NginxStatus Active connections: 1 server accepts handled requests #nginx 总共处理了3个连接, 成功创建3 次握手, 总共处理了14个请求 3 3 14 Reading: 0 Writing: 1 Waiting: 0 nginx目录浏览 在nginx.conf根目录下加入以下内容,过程如下: 1.修改配置文件 vi /usr/local/nginx/conf/nginx.conf #以下面加入以下内容 #里面有要这一句就可以了,其它可以注释 #注:与 { 要有空格,否则会出错 location / { autoindex on; } 2.重启nginx服务 (1)kill -HUP `cat /usr/local/nginx/logs/nginx.pid` (2)如果不行的话,先杀,再启动 3.测试 http://192.168.129.21 nginx禁止访问某类文件 在nginx.conf根目录下加入以下内容,过程如下: 修改配置文件如下 vi /usr/local/nginx/conf/nginx.conf #以下面加入以下内容 #里面有要这一句就可以了,其它可以注释 #注:与 { 要有空格,否则会出错 方法一: location ~* \.(txt|doc)$ { if (-f $request_filename) { root /usr/local/nginx/html/test; break; } } 方法二 location ~* \.(txt|doc)$ { root /usr/local/nginx/html/test; deny all; } 说明:用正则表达式进行匹配,来执行相应的处理。 nginx静态文件处理 第一种方法:根据文件类型expires location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ { if (-f $request_filename) { root /usr/local/nginx/html/; expires 1d; } break; } 第二种方法:根据判断某个目录 location ~ ^/(images|javascript|js|css|flash|media|static)/ { root /usr/local/nginx/html/; expires 30d; } (责任编辑:IT) |