ProxyPass /la http://后端地址
ProxyPassMatch ^/la.* http://后端地址
ProxyPassReverse /la http://后端地址
匹配地址
ProxyPass /la http://后端地址
ProxyPassMatch ^/la.* http://后端地址
ProxyPassReverse /la http://后端地址
匹配地址
apache 2.4 的 Substitute 模块是个好东西,可以用来实时修改页面内容,做些替换什么的工作,比如
ProxyPass / http://other_web_site.com
ProxyPassReverse / http://other_web_site.com
AddOutputFilterByType SUBSTITUTE text/html
Substitute “s|http://other_web_site.com|http://localhost|i”
可以把网页里面的 http://other_web_site.com 字样替换为 http://localhost
那么有时候 你会发现这个没生效,没法替换,但是这也没什么错误啊,
其实问题很可能是因为你proxy的那个站点用来压缩,导致在Substitute看起来页面是压缩的内容,他当然替换不了,那么必须在压缩前进行解压缩,其实并不需要解压,只需要告诉对方的服务器,我这里不接受压缩的文件,那么就需要另外一个模块了
LoadModule headers_module modules/mod_headers.so
这个模块可以更改proxy模块发到对方的header
RequestHeader set Accept-Encoding “”
那么完整就可以可以这样写
ProxyPass / http://other_web_site.com ProxyPassReverse / http://other_web_site.com RequestHeader set Accept-Encoding "" AddOutputFilterByType SUBSTITUTE text/html Substitute "s|http://other_web_site.com|http://localhost|i"
一共需要启用如下模块
LoadModule filter_module modules/mod_filter.so
LoadModule headers_module modules/mod_headers.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule substitute_module modules/mod_substitute.so
附:有关nginx里面proxy的时候碰到gzip
看这里 http://www.zjpro.com/nginx-substitutions4nginx.html
Discuz用户上传头像提示can not write to the data tmp folder。
解决方法:
通过chrome 的F12功能发现,上传图片调用 uc_server/control/user.php里面的函数 onuploadavatar,返回值是 -4,通过查找 -4的来源,
得到 getimagesize 函数出错,返回false,
那么写一点调试代码就能看到问题所在了
图中红圈是调试语句,根据这个的错误提示,就会发现是apache无权限读取上传的临时文件,根据提示修改apache的配置文件里面的 php_admin_value open_basedir XXXXX
通过注释掉此语句,或者修改到合适的目录使得可以读取上传文件的临时目录就可以解决此问题了。
首先说下分析为啥这个是正确的,
httpd.conf里面 AddType application/x-httpd-php5 .php
并不区分大小写,从而导致 .php .PHP .Php .pHp .phP 都可以正确执行,那么就需要防止这类漏洞,采用apache rewrite方法的时候用 NC 表示不区分大小写匹配 ,F表示forbidden
RewriteRule ^images/.*\.php – [NC,F]
apache 用 php_apache2.X.dll 调用php时候用的是 ts 的php版本
比如 LoadModule php5_module “……/php5apache2_2.dll”
就用的 ts版本的php 线程安全版
反之 用 scriptalias 调用 php.exe 或者 php-cgi.exe 的就用nts版本的php
匹配所有非 www bbs 开头的域名,可以匹配 111.domain.com aaa.domain.com
RewriteCond %{HTTP_HOST} ^(?!www|bbs)([^.]+).domainname.com [NC] RewriteRule ^$ test.php?uid=%1 [QSA,L] 或者 RewriteCond %{HTTP_HOST} ^(.+)\.domainname.com$ [NC] RewriteCond %1 !^(www|bbs)$ RewriteRule ^$ test.php?uid=%1 [QSA,L]
test.php 这样写
print_r($_GET);
一些服务器出问题,如服务器死机,如网站瘫痪,如被挂木马
整体思路是 如果正在攻击的服务器,就查看当前的 webserver 的log ,根据特征进行屏蔽
有的是 user-agent 一致 有的是 ip 一致,有的是 refer 一致
apache的相应设置可以做如下调整
BrowserMatchNoCase 特征1 bad_bot BrowserMatchNoCase 特征2 bad_bot Order Deny,Allow Deny from env=bad_bot 可以写到 .htaccess 或者配置文件里面 关于特征字串有几点要说的 就是括号和加号 需要加\ 斜线 比如 "Mozilla/5.0 \(compatible; Googlebot/2.1; \+http://www.google.com/bot.html\)" 才可以 同样也可以用rewrite 方法来对付这些 RewriteCond %{HTTP_USER_AGENT} "特征串1" RewriteRule ^(.*)$ http://127.0.0.1 RewriteCond %{HTTP_USER_AGENT} "特征串2" RewriteRule ^(.*)$ http://127.0.0.1 用的参数很多 http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} “^特征字符串正则表达式$”
RewriteRule ^(.*)$ http://127.0.0.1
nginx 的配置如下
if ( $http_user_agent = “特征串”) { return 444; };
或者
if ( $http_user_agent ~* “特征串”) { return 444; }
注意特征串如果这正则情况下 斜线 / 括号 () 都是要加斜线的
根据 User-Agetn 为空,或者特定字符串 ,屏蔽之
SetEnvIfNoCase User-Agent ^$ GoAway SetEnvIfNoCase User-Agent 字符串 GoAway <Directory /目录> Order allow,deny Allow from all Deny from env=GoAway </Directory> 也可以参考 /user-agent-apache-ddos.html
apache 的rewrite 匹配HTTP_HOST 的参数是 %N !!! 备注一下
最近一朋友的centos apache 2.2 发现大量的ip 出现 time_wait 显现
即 netstat -an | grep “:80” 的结果大量显现 time_wait
初期以为是 被Ddos 了,后发现即使是就一个ip访问,也产生大量time_wait
遂修改 apache 配置文件 httpd.conf
KeepAlive On
MaxKeepAliveRequests 120
KeepAliveTimeout 15
观察后问题解决