location匹配命令

1. “= ”,字面精确匹配, 如果匹配,则跳出匹配过程。(不再进行正则匹配)

2. “^~ ”,最大前缀匹配,如果匹配,则跳出匹配过程。(不再进行正则匹配)

3. 不带任何前缀:最大前缀匹配,举例如下:

location / 代表以”/”开头的搜索匹配, 再没有正则表达式匹配的情况下才进行这个匹配(优先级最低)

4. “~ ”,大小写相关的正则匹配

5. “~* ” , 大小写无关的正则匹配

6. “@”, Named location 不是普通的location匹配,而是用于location内部重定向的变量。

其中: 1、2、3 三种情况属于 location using literal string, 即使用普通字符串的location匹配;

4、5 二种情况属于 location using regular expresstion,即使用正则表达式的location匹配;

 

location = / {
# 只匹配”/”.
[ configuration A ]
}
location / {
# 匹配任何请求,因为所有请求都是以”/”开始
# 但是更长字符匹配或者正则表达式匹配会优先匹配
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 开始的请求,并停止匹配 其它location
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg结尾的请求.
# 但是所有 /images/ 目录的请求将由 [Configuration C]处理.
[ configuration D ]
}

centos 系统安装Goaccess

1. 需要安装 GeoIP, ncurses, glib2

#yum -y install glib2 glib2-devel ncurses ncurses-devel GeoIP GeoIP-devel

2.下载 GoAccess 解压编译安装

$ wget http://tar.goaccess.io/goaccess-1.2.tar.gz
$ tar -xzvf goaccess-1.2.tar.gz
$ cd goaccess-1.2/
$ ./configure –enable-utf8 –enable-geoip=legacy
$ make
# make install

3.使用

goaccess -d -f access.log -a > test.html

Read More →

出现502 bad gateway错误的原因

1.php-fpm进程数不够用
2.Linux内核打开文件数量小
3.脚本执行时间超时
4.缓存设置比较小

网站间歇性出现502,第一反应不是程序的问题,而是nginx服务器的问题,因为这是代理服务器出现的问题,代理服务器并没有安装php 排除第一中情况。

于此想到的是可能是超时,所以我把超时修改了一些
一下是服务器原配置(重点配置)

http部分

server_names_hash_bucket_size 64;
client_header_buffer_size 128k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;

keepalive_timeout 60;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 60;
fastcgi_read_timeout 600;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 128k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;

gzip_buffers 4 128k;

server部分

upstream myweb {
server 10.10.10.1:80 max_fails=3 fail_timeout=30s;
server 10.10.10.2:80 max_fails=3 fail_timeout=30s;
ip_hash;
}

location / {
proxy_pass http://myweb;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
}

Read More →

为了安全起见,我们一般会对上传目录禁止运行php脚本
在apache下面我们可以通过:
<Directory /website/upload>
php_flag engine off
</Directory>
的方式来来禁用目录下文件php执行权限。那么在nginx里面同样可以实现这种方法
这里简单就举个例子
location ^~ /upload/
{
access_log off;
}
这样 attachments这个目录 就不会再去跳转给fastcgi去执行php了.这里利用了nginx下location指令的处理顺序优先级特点.
但上面的方法只能算一种技巧,一般不这样设置,正确的方法为:
location /upload/ {
location ~ .*.(php)?$
{
deny all;
}
}
而对于多个目录的话,可以一起进行限定:
location ~* ^/(upload|images)/.*.(php|php5)$
{
deny all;
}

1.安装准备依赖lib库
yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
安装Nginx
2.安装之前,检查一下是否已经安装有nginx
find -name nginx
如果系统已经安装了nginx,那么就先卸载
yum remove nginx
yum安装nginx
3.新建
/etc/yum.repos.d/nginx.repo
添加以下,以centos7为例
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/rhel/7/$basearch/
gpgcheck=0
enabled=1
rpm –import http://nginx.org/keys/nginx_signing.key

yum install nginx
/bin/systemctl status nginx.service

4.配置:

安装后,NGINX的网站目录位于:
/usr/share/nginx/html
NGINX的配置文件位于:
/etc/nginx/ nginx.conf

nginx -t 测试配置文件
nginx -v 查看相关版本