nginx 基础配置和常用模块
这两天在看nginx的东西,下面是学习过程中学习到东西,贴了出来若有哪里不对请大家给予指正。一:nginx安装:
./configure --prefix=/usr/local/nginx/
make && make install
采用 nginx -V 可以查看nginx版本和所安装的模块等信息。
二:nginx http基本配置
worker_processes1; /* 配置nginx启动的进程数量 一般和cpu的核数相同 */
events { /* 配置nginx的工作模式和连接限制 */
worker_connections1024;/* 配置nginx每个进程的最大连接数 */
}
http {
include mime.types; /* nginx 包含其它的配置文件 如单独的虚拟主机配置文件可防止配置文件太过复杂 */
default_typeapplication/octet-stream;/*默认的nginx的相应文件类型为二进制流*/
sendfile on; /* 开启高效的文件系统*/
keepalive_timeout65; /*客户端连接空闲超时时间*/
server { /*虚拟主机的配置*/
listen 80; /*虚拟主机监听的ip地址和端口*/
server_namelocalhost; /*虚拟主机的域名*/
location / { /*匹配域名根*/
root html; /*网站文件所在的根目录*/
indexindex.html index.htm; /*虚拟主机的默认文档*/
}
error_page 500 502 503 504/50x.html; /*发生5**错误时候重定向到指定的页面*/
location = /50x.html { /*匹配5**错误时候到哪里去寻找错误页面*/
root html; /*错误页面所在位置*/
}
}
}
经过上述简单配置nginx就可以工作了,检查一下配置文件的正确性执行下述命令:
# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
可以看到上面已经检查配置文件是正确的,下面启动nginx
# ./nginx
看到无任何输出表示已经启动成功,打开浏览器输入http://serverip/ 即可看到nginx的初始页面
三:nginx一般常用的功能和模块主要有
ngx_http_gzip_static_module、upstream 、虚拟主机、php-fastcgi、url重写、ngx_http_ssl_module这几个功能和模块。
3.1 ngx_http_gzip_static_module这个模块主要用来对请求的文件进行压缩 然后传送至客户端可以节省网络带快加快传输速度,但是经过服务器处理压缩需要消耗一定cpu资源,常用的配置如下
gzip on; /*开启gzip压缩*/
gzip_buffers 4 16k; /*分配多少内存用来存储压缩过的数据*/
gzip_min_length 1k; /*最小压缩文件、当文件小于1k时不进行压缩因为有可能越压缩越大*/
gzip_comp_level 2; /*进行压缩的比列级别 1-9 分别是从低到高的压缩比例*/
gzip_types 类型 ; /*进行压缩的文件类型,默认情况下text/html 都进行压缩*/
gzip_http_version 1.1;/*指定那个协议版本进行压缩*/
3.2 upstream 模块主要用来做负载均衡,常用配置如下:
upstream Test{ /*指定指定负载均衡组的名称*/
ip_hash; /*设置服务器用客户端的ip地址进行hash计算将来自同一ip地址的请求分配到同一后端真实服务器预防session的丢失,另外还有其它的一些算法如fair、url_hash*/
server 172.16.1.2:80 weight=1 max_fails=1 fail_timeout=20s; /*设置后端真实服务器的参数包括服务器ip:端口、权重(权重越大分配的请求越多)、最大连接失效数(默认是一次)、到达最大连接失效数后服务停止时间 还有其它的一些参数如backup(在所有服务器都失效时启用此服务器)、down (当服务故障维护时将服务器标记为down不用从配置文件删除或注释掉)*/
server 172.16.1.3:80 weight=1 max_fails=1 fail_timeout=20s;
}
注:经过反向代理后,后端的真实服务器无法获取访问者的真实ip可以在nginx上更改http请求头部信息来实现,详见后续
3.3 一台服务器上需要跑多个站点的话需要采取这种技术,常见有两种分别是基于域名的虚拟主机和基于ip的虚拟主机,基本配置如下:
基于域名的虚拟主机:
server { /*主机或虚拟主机的配置开头*/
listen 172.16.3.80:80; /*设置虚拟主机的监听的ip地址和端口*/
server_name www.extest.com; /*设置本虚拟主机匹配的域名,可配置多域名,多个域名之间用空格隔开*/
access_log /var/www/log/; /*设定访问日志的路径*/
location / { /*虚拟主机的的匹配目录*/
root /var/www/html;
index index.html;
}
}
基于ip的虚拟主机(前提是服务器上有多块网卡或者当网卡配置多个ip):
server { /*主机或虚拟主机的配置开头*/
listen 172.16.3.80:80; /*设置虚拟主机的监听的ip地址和端口*/
server_name 172.16.3.80; /*设置本虚拟主机匹配的主机名称*/
location / { /*虚拟主机的的匹配目录*/
root /var/www/html;
index index.html;
}
}
3.4 nginx使用fastcgi解析nginx配置如下:
location ~\.php$ { /*设置当请求的文件时.php时用下列的配置进行解析*/
root html; /*文档目录位置*/
fastcgi_pass 127.0.0.1:9000; /*php文件通过通过fastcgi解析的ip和端口*/
fastcgi_index index.php; /*请求的php主文档*/
fastcgi_paramSCRIPT_FILENAME/usr/local/nginx/html/$fastcgi_script_name; /*配置哪个目录下的php文件用fastcgi解析*/
include fastcgi_params; /*包括其它fastcgi配置文件*/
}
fastcgi的一些优化,在http块增加如下的一些配置:
fastcgi_read_timeout 300;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
未完....待续
页:
[1]