nginx安装配置
1. nginx安装启停命令
1.1 nginx安装包链接点击这里
1.2 Yum安装:
vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpg check=0 enabled=1
|
1.3 源码安装,prefix表示安装路径,默认/usr/local/,gzip支持文件压缩,pcre支持正则匹配,ssl支持https加密,add-module表示编译三方模块到nginx;安装nginx前linux需安装pcre、openssl和zlib库,或者下载源码在编译nginx时,指定路径到nginx
安装前先安装依赖包:
yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
|
编译安装如下:
tar xvzf nginx-1.9.14.tar.gz cd nginx-1.9.14 ./configure --prefix=/opt/nginx \ --with-http_gzip_static_module \ --with-pcre --with-http_stub_status_module \ --add-module= gnosek-nginx-upstream-fair \ --with-http_ssl_module --with-zlib make && make install
|
1.4 更多安装的编译选项点击这里
1.5 安装完成之后启停操作:
/opt/nginx/sbin/nginx /opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf ps -ef |grep nginx netstat -tlnp|grep 80 /opt/nginx/sbin/nginx -t /opt/nginx/sbin/nginx -s reload /opt/nginx/sbin/nginx -s stop (kill -HUP pid)
|
2. nginx配置文件说明
2.1 全局配置
user nginx nginx; worker_processes 2; worker_cpu_affinity 01 10; worker_rlimit_nofile 51200; error_log logs/error.log info; pid logs/nginx.pid;
use epoll; worker_connections 51200;
对所有的虚拟主机(server)生效
只对单个虚拟主机(server)生效
|
2.2 基础配置
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;
gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain text/css application/xml ; server_tokens off; autoindex on;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ { root /download; expires 7d; }
sendfile on; keepalive_timeout 65; send_timeout; client_max_body_size 10m; client_body_buffer_size 128k;
location /nginxstatus { stub_status on; access_log off; allow 192.168.1.1; deny all; }
|
3. nginx中location匹配规则
3.1 语法
location [ =|~|~*|^~|@ ] /uri/ { … }
3.2 匹配原则
先普通 location ,再匹配正则 location = ^~ uri ~ ~
@为内部匹配,外面请求调不通
详细说明:先遍历普通location,如匹配到=的uri,终止匹配;如无匹配到=,遍历匹配^~的uri,如匹配到,终止匹配;如有多条匹配结果,取最长的一条匹配规则,此处不终止匹配,继续遍历~和~的location,匹配第一条后终止,如若未匹配到,选取上面最长的一条匹配规则
3.3 实例
location = / { / 匹配 } location / { /index.html匹配到 } location /documents/ { /documents/documents.html匹配到 } location ^~ /images/ { /images/1.jsp匹配到 } location ~* \.(gif|jpg|jpeg)$ { /documents/1.jsp匹配到 }
|
4. nginx中rewrite模块
4.1 URL重写
~ 区分大小写
~* 不区分大小写
4.2 条件判断
-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行
4.3 标记
last(持续匹配);break(匹配一次后终止)
redirect;permanent ;临时(302)/永久(301)重定向
4.4 Nginx 变量
$args : $content_length : $content_type : $document_root : $host : $http_user_agent : $http_cookie : $limit_rate : $request_method : $remote_addr : $remote_port : $remote_user : $request_filename : $scheme : $server_protocol : $server_addr : $server_name : $server_port : $request_uri : $uri : $document_uri :
|
4.5 正则标识
. : ? : + : * : \d : ^ : $ : {n} : {n,} : [c] : [a-z] : 小括号()之间匹配的内容,可以在后面通过$1来引用,$2表示的是前面第二个()里的内容,\是转义特殊字符
|
4.6 If 语句
if ($uri ~* ^/(auth/tologin|auth/loginsubmit)$ ) { rewrite ^(.*)$ https://$host$1 permanent; }
|
5. gdb查看nginx的core文件
5.1 编译调试版本的nginx,可看到堆栈信息
5.2 用gdb命令查看core文件
gdb nginx.debug core.xxxx
在进入gdb后,用bt命令查看backtrace以检查发生程序运行到哪里,来定位core dump的文件->行