我们都知道nginx是可以做跨域代理的:
location ^~ /visited-path/ { proxy_pass http://another-domain/; }
我们都知道nginx是可以做跨域代理的:
location ^~ /visited-path/ { proxy_pass http://another-domain/; }
使用nginx搭建的站点,如果不想让所有人都能正常访问,那么可以设置访问认证,只有用户输入正确的用户名和密码才能正常访问。效果如下:
假如 ThinkPHP 5.x 项目,在网站的一个子目录下面,如 /wenjianbao,如何设置Nginx的地址重写规则?
cat 日志.log | awk -F ' ' '{print $1}' | sort | uniq -c | sort -nr
查看最近访问平常的ip,一般攻击的都是各种充分访问或者各种尝试攻击,在短时间log很容易看的出来,这里直接能列得出每个IP的访问次数,
如果IP过多,加个|head查看前10
感觉那个ip疑是就
cat 日志.log | grep '这个ip'
最好导出来看,一般是攻击看大访问的地址 等等形式就看得出来了
rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用,例如 https://php-note.com/a/we/index.php?id=1&u=str
只对/a/we/index.php重写。语法rewrite regex replacement [flag];
nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现:
首先是伪代码(即不被nginx支持),写在这里只是为了方便理解:
if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") { return 403; }
下面这是等效的,并真实可用的配置
set $flag 0; if ($remote_addr ~ "^(12.34|56.78)") { set $flag "${flag}1"; } if ($http_user_agent ~* "spider") { set $flag "${flag}2"; } if ($flag = "012") { return 403; }
codeigniter(CI)是一个轻量型的PHP优秀框架,在nginx下需要特别的配置才可以使用。
对application/config/config.php
进行修改,大约在48行左右。
$config['uri_protocol'] = "PATH_INFO"; // 用默认的 REQUEST_URI 也可以
有个工作场景:
1、公司的一台 CentOS 服务器上运行了好几个网站,每个网站又是由不同的团队在维护,如果确保 ftp 更新文件的时候,不更新错,不乱窜。如何避免 本来给A网站更新文件,结果上传到B网站了等等乱象;
2、只用 CentOS 自带的 sftp,不打算安装 vsftpd 等第三方 ftp 软件;
3、网站目录参考如下:
/alidata/www/test.cnblogs.com
/alidata/www/www.cnblogs.com
这篇文章我们就特别来讲解下,nginx、php-fpm 以及 mysql 运行在各个用户下的配置。
先来做个说明:nginx本身不能处理PHP,它只是个web服务器。当接收到客户端请求后,如果是php请求,则转发给php解释器处理,并把结果返回给客户端。如果是静态页面的话,nginx自身处理,然后把结果返回给客户端。
Nginx下php解释器使用最多的就是fastcgi。一般情况nginx把php请求转发给fastcgi(即 php-fpm)管理进程处理,fastcgi管理进程选择cgi子进程进行处理,然后把处理结果返回给nginx。
在这个过程中就牵涉到两个用户,一个是nginx运行的用户,一个是php-fpm运行的用户。如果访问的是一个静态文件的话,则只需要nginx运行的用户对文件具有读权限或者读写权限。
而如果访问的是一个php文件的话,则首先需要nginx运行的用户对文件有读取权限,读取到文件后发现是一个php文件,则转发给php-fpm,此时则需要php-fpm用户对文件具有有读权限或者读写权限。