1.如何保护Wp-Config.Php文件
2.私有云存储(私有云存储器)
3.å¦ä½å建.htaccesså¦ä½å建微信å
¬ä¼å·
4.盘点那些渗透测试中的源码奇*技巧
5.RewriteçRewriteä»ç»
如何保护Wp-Config.Php文件
WordPress CMS的内容管理系统中,wp-config.php文件存储了非常敏感的源码信息,如安全密钥和数据库连接信息。源码因此,源码保护wp-config.php文件至关重要。源码以下是源码shadowsock源码解读一些保护wp-config.php文件的方法。
1. 通过.htaccess文件保护:使用FTP客户端下载网站根目录中的源码.htaccess文件,并添加拒绝访问wp-config.php文件的源码代码,然后将文件上传回根目录。源码
2. 移动wp-config.php:将wp-config.php文件移动到不可预测的源码位置,以提高安全性。源码这需要更改WordPress源代码并进行维护。源码
3. 创建新的源码wp-config.php文件:创建一个名为config.php的新文件,并将其放置在非WWW可访问的源码目录中。将敏感数据从原wp-config.php文件移动到新文件中。源码
总结:确保wp-config.php文件按上述步骤配置,并让用户了解最佳安全实践。在安装新插件时,Java更改源码检查是否存在已知漏洞,并在安全性和实用性之间取得平衡,以更好地保护wp-config.php文件和WordPress网站。
私有云存储(私有云存储器)
现在云计算已经算不上一个新鲜词了,各大IT公司的产品都会套上一个“云”字来忽悠用户。相信大家都用过网盘,现在更流行的词应该叫“云存储”,像用的比较多国外的有Dropbox、SkyDrive,国内也有百度云网盘、sina微盘、腾讯微云网盘等等,我们可以用这些网盘在不同的设备上来存储/获取数据,如PC、智能手机、平板电脑等等,同时我们希望不同设备间的禅境花园源码数据是同步的。
我们将要搭建自己的云系统平台,更精确的说是一个云存储系统,正如上面的产品所提供的功能。我们将使用开源软件ownCloud来搭建自己的私有云。ownCloud起源于一个叫TheKDE云计算项目,现在已经适用于大多主流平台,它最早是KED的开发者FrankKarlitschek创建的,现在由一个ownCloudteam共同开发。
下面教大家如何一步一步地搭建属于自己的云存储平台:
第一步:预装软件。
ownCloud内核是用PHP5写的,支持SQLite、MySQL、Oracle以及PostgreSQL等数据库。为了简单,我们将用MySQL数据库。在你的Linux系统下你需要安装以下软件:
PHP安装包:php5,php5-gd,php-xml-parser,php5-intl数据库驱动:php5-mysqlCurl安装包:curl,libcurl3,php5-curlSMB客户端:smbclientWeb服务器:apache2如果你的Linux是基于Debian的,你可以运行下面的忠义OL源码命令一键安装所有的软件:
$sudoapt-getinstallapache2php5php5-gdphp-xml-parserphp5-intlphp5-sqlitephp5-mysqlsmbclientcurllibcurl3php5-curlmysql-server
第二步:安装ownCloud——设置web根目录。
从第三步:安装ownCloud——配置web服务器。
这一步我们要为ownCloud配置Apache服务器,OwnCloud需要启用Apache上.htaccess文件,.htaccess文件提供了针对目录改变配置的方法。为了启用web服务器上的.htaccess,可以通过Apache配置文件的AllowOverride指令来设置。
Directory/var/www/
OptionsIndexesFollowSymLinksMultiViewsAllowOverrideAllOrderallow,denyallowfromall/Directory下一步我们需要启动Apache的mod_rewrite模块,mod_rewrite模块提供了实时地将访问者请求的静态URL地址映射为动态查询字符串的一种规则。运行下面的命令来启动这个模块:
$sudoa2enmodrewrite$sudoa2enmodheaders一旦你使能了这个必要的模块,你可以重启apache服务来使之生效:$sudoserviceapache2restart
第四步:安装OwnCloud——安装运行。
在浏览器中打开第五步:使用桌面同步客户端同步文件。
你可以使用桌面同步客户端同步不同电脑、设备上的文件,适用于Linux、OSX和Windows系统。跟ownCloud一样,桌面同步客户端也是openapi前端源码开源的。
例如Ubuntu下,你可以通过apt-get安装:
$sudoapt-getinstallowncloud-client对于其他的发行版,你可以通过这个URL下载ownCloud的桌面同步客户端:第六步:使用移动同步客户端同步文件。
ownCloud文件同步不仅仅局限于桌面端,你也可以使用ownCloud的移动同步客户端同步你的文件,ownCloud移动应用适用于Andorid、iOS平台。Andorid版的应用允许你从任何Android应用上传文件,以及提供自动同步文件功能。
你可以从GooglePlay商店或者Amazon应用商店付费下载。如果你不愿意付费,也可以自己编译源代码或者下载预制的APK文件。
对于iOS版应用不是开源的,只能成Apple应用商店获得us/app/owncloud/id?mt=8。
我从githubclone一个最新的源代码,经过编译之后安装在我的Android上,下图为软件运行时截图。
主要内容编译自:tutorials/build-your-own-cloud更多关于ownCloud开发和使用的信息,可以访问其官网:
å¦ä½å建.htaccesså¦ä½åå»ºå¾®ä¿¡å ¬ä¼å·
å¦ä½å建ä¸ä¸ªæ²¡ææ件åçæ件ãWindowsä¸çhtaccessWindowsæ¬èº«ä¸å 许éå½åæ¶ï¼åé¢æ²¡æå符ãå®è®¤ä¸ºè¿æ ·çæ件åæ¯éæ³çãè¿ä½¿å¾æ们æ æ³éè¿å°ânewtextdocument.txtâéå½å为â.âæ¥å建è¿ä¸ªè®¿é®æ§å¶æ件ãhtaccessâãä½æ¯ï¼å¡äºæ»æ解å³çåæ³ãä¸ç以ä¸æ¹æ³:1.使ç¨DOSå½ä»¤ï¼å¨DOSä¸æä¸ç§æ¹æ³å¯ä¾éæ©:
使ç¨å±å¹ç¼è¾å½ä»¤copycon.htaccessï¼ç¶åå车ï¼è¾å ¥å 容ï¼æåæctrlzå®æç¼è¾ï¼åãhtaccesså·²æåçæï¼
å°å½ä»¤éå½å为ren1.txtãhtaccessï¼è¿æ¯æ常ç¨çæ¹æ³ãä¸è½å¨windowswindowsä¸æ§è¡çå½ä»¤åå¨cmdä¸ä¸æ ·å¥½ã
使ç¨éå®åå½ä»¤echoã>:.å¨è¿éï¼è¾å ¥ä¸ä¸ªå车ãhtaccessï¼ä¹å¯ä»¥å建æåï¼
2.使ç¨winrarçæ件管çå¨æ°å»ºä¸ä¸ªææ¬ææ¡£ï¼ç¶åæå¼winrar主çé¢ï¼å®ä½æ件ï¼ç´æ¥éå½åå³å¯ãè¿æ¯æ解åå½å¤å¼æºé¡¹ç®æ¶ççµæï¼è¿æå®èªå·±çãhtaccesså¯ä»¥æ£ç¡®è§£å缩ãå½ç¶å¯ä»¥ç¨7zipä¹ç±»ç管çå¨ã
3.ç´æ¥éè¿ææ¬ç¼è¾å·¥å ·ä¿åï¼å¦è®°äºæ¬ãultraEditçãï¼ä½å¨ä¿åæ¶ï¼æ¨å¯ä»¥åªéæ©æææ件ãè¿ççæ¯æ¬ æçæ¹å¼ï¼ä½è¯å®ä¸æ¯æï¼æ¯å¾®è½¯ã
4.使ç¨phpä¸çæ件å建æ¹æ³ï¼fopenï¼file_put_contentsæ件åå¯ä»¥ç´æ¥å为ãhtaccessã
proftpdé 置详解ï¼
proftpdå ¨ç§°ï¼ProfessionalFTPdaemonæ¯é对Wu-FTPç弱项èå¼åçï¼é¤äºæ¹è¿çå®å ¨æ§ï¼è¿å ·å¤è®¸å¤Wu-FTP没æçç¹ç¹ï¼è½ä»¥Stand-aloneãxinetd模å¼è¿è¡çãProFTPå·²ç»æ为继Wu-FTPä¹åæ为æµè¡çFTPæå¡å¨è½¯ä»¶ï¼è¶æ¥è¶å¤çç«ç¹éç¨å®æçå®å ¨é«æçFTPç«ç¹ï¼ProFTPé ç½®æ¹ä¾¿ï¼å¹¶æMySQLåQuota模åå¯ä¾éæ©ï¼å©ç¨å®ä»¬çå®ç¾ç»åå¯ä»¥å®ç°éç³»ç»è´¦å·ç管çåç¨æ·ç£ççéå¶ãProFTPDçç¹ç¹ï¼
1.åé ç½®æ件ï¼å ¶è®¾ç½®æ示åapacheçæ类似ä¹å¤ï¼é常容æé ç½®ã
2.åºäºå个ç®å½ç.ftpaccess设置æ件ï¼ç±»ä¼¼ä¸apacheç.htaccessæ件ã
3.æäºè®¾ç½®çå¤èææå¡å¨åå¿åftpæå¡ã
4.å¯ä»¥è®¾ç½®ä¸ºä»xinetdå¯å¨ï¼æè æ¯ç¬ç«ftpæå¡å¨ä¸¤ç§è¿è¡æ¹å¼ã
5.å¿åftpçæ ¹ç®å½ä¸éè¦ä»»ä½ç¹æ®çç®å½ç»æï¼æç³»ç»ç¨åºæå ¶ä»ç³»ç»æ件ã
6.ncfptdä¸æ§è¡ä»»ä½å¤é¨ç¨åºï¼ä»èåå°äºå®å ¨éæ£ã
7.å¯ä»¥æ ¹æ®æ件å±ä¸»æ åµæunixé£æ ¼ç访é®æ§å¶æ¥éèæ件æç®å½ã
8.以éroot身份è¿è¡ï¼ä»èåå°äºå®å ¨éæ£ã
9.强大çlogåè½ï¼æ¯æutmp/wtmpåwu-ftpdæ ¼å¼çè®°å½æ åï¼å¹¶æ¯ææ©å±åè½çè®°å½ã
.æ¯æShadowå¯ç ï¼å æ¬æ¯æå¯ç è¿ææºå¶ã
.éµä»GPLçæï¼å¼æ¾æºä»£ç ã
.å¯è®¾å®å¤ä¸ªèæFTPserverï¼èå¿åFTPæå¡æ´æ¯åå容æã
é误产ççåå ï¼
åå ï¼
é常ï¼é误æ¯ç±å®¢æ·ç«¯ç访é®é误é ç½®å¼èµ·çï¼è¿æå³çæ¨é常å¯ä»¥èªå·±è§£å³é®é¢ã
è¿äºé误ç常è§åå æ¯æ件ææ件夹æé设置ï¼å®æ§å¶è°å¯ä»¥è¯»åãåå ¥åæ§è¡æ件ææ件夹ã
å¨è¿ç§æ åµä¸æ两ç§å¯è½æ§ï¼ç½ç«ææè ç¼è¾äºè®¾ç½®ï¼ä½¿æ¨æ æ³è®¿é®èµæºï¼æè ä»ä»¬æ²¡æ设置æ£ç¡®çæéã
第äºä¸ªå¸¸è§åå æ¯.htaccessæ件ä¸ç设置æåæä¸æ£ç¡®ãå¨æ¨å¯¹æ件è¿è¡æ´æ¹åï¼å¯è½ä¼åçè¿ç§æ åµãæ¨åªéå建ä¸ä¸ªæ°ç.htaccessæ件å³å¯è½»æ¾è§£å³è¯¥é®é¢ã
é¤äºè¿ä¸¤ä¸ªå¸¸è§åå ä¹å¤ï¼è¿æä¸äºå ¶ä»å¯è½çé误触åå ç´ ï¼
缺å°ç´¢å¼é¡µ_ç½ç«ç主页å称ä¸æ¯index.htmlæindex.phpã
é误çWordPressæ件_å¦æWordPressæ件é ç½®ä¸æ£ç¡®æä¸å¦ä¸ä¸ªæ件ä¸å ¼å®¹ï¼åå¯è½ä¼è§¦åé误ã
é误çIPå°å_ååæåé误çææ§çIPå°åï¼è¯¥å°åç°å¨æ管ä¸ä¸ªé»æ¢æ¨è®¿é®çç½ç«ã
æ¶æ软件ææ-æ¶æ软件ææå¯è½ä¼å¯¼è´.htaccessæ件ä¸ææåãå¨æ¢å¤æ件ä¹åï¼æ¨éè¦å é¤æ¶æ软件ã
æ°ç½é¡µé¾æ¥-ç½ç«ææè å¯è½å·²æ´æ°é¡µé¢é¾æ¥ï¼ç°å¨ä¸ç¼åçæ¬ä¸åã
å®å¡é¢æ¿ææ ·è®¾ç½®é¡µé¢ï¼
1ãApacheæå¡å¨ä¸è®¾ç½®é误页é¢
为ApacheServer设置é误页é¢çæ¹æ³å¾ç®åï¼é¦å å¶ä½ä¸ä¸ªå为.html/.htm/.php/.asp/.aspxç页é¢ï¼è§ç©ºé´è¦æ±èå®ï¼åå¨.htaccessæ件ä¸å å ¥å¦ä¸å 容å³å¯(.htaccessæ件ä¸è¬linux空é´ä¼èªå¸¦çï¼å¦æ没æè¿ä¸ªæ件ï¼èªå·±å¯ä»¥ç¨è®°äºæ¬åä¸ä¸ªï¼å½å为.htaccess,ä¸å®è¦è®°å¾å»æè®°äºæ¬æ件ç.txtå¦ãèwindowsèæ空é´æ¯æ²¡æè¿ä¸ªæ件çï¼ä¹ä¸ç¨ä¸ä¼ è¿ä¸ªæ件)ï¼
page
ErrorDocument/notfound.php
(ânotfoundâæ¯ä½ ç»ä½ çèªå®ä¹é误页é¢çå½åï¼ä½ ä¹å¯ä»¥æ¹æError.phpçç)
注æï¼
(1).åè®°ä¸è¦å°é误跳转å°ç½ç«ä¸»é¡µï¼æ¯å¦ä½¿ç¨äºjsèæ¬æè metarefresh跳转ææ¯ãå¦åå¯è½ä¼å¯¼è´ä¸»é¡µå¨æç´¢å¼æä¸æ¶å¤±æè ä¸è¢«æ¶å½.
(2).åè®°ä¸è¦ä½¿ç¨ç»å¯¹URLå¦æ使ç¨ç»å¯¹URLè¿åçç¶æç æ¯ââ+ââ
2ãIIS/ASP.netä¸è®¾ç½®é误页é¢
éæé误页é¢è®¾ç½®
(1)å个页é¢ï¼.htmlæè .htmï¼æ ¹æ®ä½ çç½ç«å®é æ åµæ¥ã
(2)æå¡å¨/èæ主æºç®¡ç设置ï¼æ ¹æ®èªå·±çæ åµï¼éæ©â使ç¨æ ¹ç®å½ä¸ç页é¢âï¼å¦æèªå·±è½æ¾å°âæ¶æ¯ç±»åâé项ï¼åè¦éæ©âæ件âæè âé»è®¤å¼âï¼èä¸è½éæ©âURLâãå¦æèªå·±å¨ä¸»æºæä¾åç½ç«ç管çåå°æ¾ä¸å°æ¤âæ¶æ¯ç±»åâé项请èç³»ææ¯å®¢æååºä¿®æ¹ãè¿æ¯å ·æå³å®æ§çä¸æ¥ãè¿æ¥ä¸å®è¦æä½å¥½ï¼å¦æå¨åå°æ¾ä¸å°è¿ä¸ªæ¶æ¯ç±»åï¼å°±ä¸è¦èªå·±è®¾ç½®ï¼å ä¸ºä½ è®¾ç½®ä¹åè¯å®è¿åå¼æ¯ï¼æ以äºå å客æèç³»ä¸ã
(3)ä¸ä¼ .htmå°ç½ç«æ ¹ç®å½ï¼æå¼ä¸æ¬¡è¯è¯ï¼çæ¯å¦æåäºã
盘点那些渗透测试中的奇*技巧
总结下渗透测试中的一些小技巧,仅做总结。
0x php文件包含姿势
这类姿势国外黑阔早有总结,比如包含上传的文件,当然文件可控。利用php封装协议php://input和data://,包含post数据造成php命令执行,当然allow_url_include选项需要打开。包含log文件也是可以,当我们提交恶意代码时也会被记录,于是包含记录了恶意代码的log文件是个好主意。包含/proc/self/environ文件:这需要PHP运行作为一个具有cgion/proc伪文件的系统且PHP脚本有权访问这些伪文件。包含会话文件需要攻击者能控制会话中的任何字符串值(注入代码,例如phpinfo(),会话文件必须存放在serializedsession文件且PHP脚本能够访问会话文件(通常是/tmp/ sess_SESSIONID文件)。包含其他由php应用创建的文件,只要你能想到的,都可以尝试创建然后包含他,比如数据库文件,缓存文件,应用程序级别的日志。
0x .htaccess文件突破黑名单解析
因为是黑名单,自定义.htaccess上传,内容为test.jpg文件,没有扩展名,内容是一句话,这个时候就成功绕过。
0x php流封装绕过截断
主要利用了PHP的一个流封装特性,可以参考PHP官方文档中的Example #3。假设存在文件包含的代码,但%无法截断,只能包含 xxxx.html.php。首先新建hello.html.php,内容为phpinfo();然后压缩成zip,结构如下图。然后访问网址,成功包含压缩文件内的hello.html.php。把我们输入的变量和include后面的变量合起来就是zip://test.zip#hello.html.php,代表当前目录下的test.zip压缩包里面的hello.html.php,于是包含成功。
0x 通用防注入系统getshell
相信许多朋友渗透测试都遇到过这种情况,系统做了数据提交记录,通过阅读类似程序的源码得知数据记录在sqlin.asp。于是想到直接提交一句话木马,但没有成功。提交and 1= ,通过菜刀连接sqlin.php即可。
0x iis+php黑名单上传突破
在php+window+iis环境下,双引号(“>”)等价于点号(“.”),大于符号(“>”)等价于问号(“?”),小于符号(“<“)等价于星号(“*”)。虽然有这么多好玩的东西,但这特性只能用于文件上传时覆盖已知的文件,于是这特性便略显鸡肋。但通过一系列的测试发现,P牛已经给出完美利用的方法。首先利用特殊办法生成一个php文件,然后再利用该特性将文件覆盖。可问题来了,怎样生成php文件呢?如果可以直接生成php文件的话,干嘛还要利用那什么特性?别急,办法总是有的。我们知道在文件上传时,我们往往会考虑到文件名截断,如%等。对!有的人可能还会用冒号(“:”)去截断,如:bypass.php:jpg。但你知道吗?冒号截断产生的文件是空白的,里面并不会有任何的内容。虽然生成的php文件里面没有内容,但是php文件总生成了吧,所以我们可以结合上面所说的特性完美成功利用。按照上面提供的思路,实现本地测试地址:/$1 [R=]
å° ... è¿ä¸ª IP æ¿æ¢ææ¨è¦éå¶ç IP å³å¯ãå¦æè¦å®ç°å¤ä¸ª IP ï¼å¯ä»¥è¿æ ·åï¼
RewriteCond % ... [OR]
RewriteCond % ... [NC]
RewriteRule ^(.*)$ /$1 [R=] Rewrite主è¦çåè½å°±æ¯å®ç°URLçéåãå®çæ£å表达å¼æ¯åºäºPerlè¯è¨ï¼å ¥ç«çè§åç¨äºä¿®æ¹ HTTP è¯·æ± Urlãè¿äºè§åå¯ä»¥ä¸ºä»¥ä¸å 个ç®çï¼å¦æ¼ç¤ºå¯¹ç¨æ·æ´å å好ç URL å½å空é´ä¸ºæ¨ç Web ç«ç¹ï¼å°è¯·æ±ç Url éå®åå°æ°ä½ç½®ï¼æé»æ¢è®¿é® Url æ¥æä¾æå¡ãåºç«çéåè§åä¿®æ¹ HTTP ååºãä¾å¦ï¼å¦ææ¨ç Web ç«ç¹ç导èªç»æå·²æ´æ¹ï¼æ¨å¯ä»¥å建修æ¹æ¨çå 容ä¸ç Urlï¼ä»¥ä¾¿å° Web 页çå 容æåæ£ç¡®çä½ç½®åºç«è§åãç¶åï¼æ¨å¯ä»¥å建åºäºç¼åçä½ç½®ä¸æ°ç url ç客æ·ç«¯è¯·æ±éå®åçå ¥ç«çè§åãå¯åºäºæå¡å¨çº§ç(/ æ¥å¦ä¹ ï¼è¿éæ们举ä¸ä¸ªç®åçä¾åæ¥è¯´æå®çç¨æ³ã
å设æ¨è¦å®ç°è¿æ ·ç Rewrite åè½ï¼æ¨å¸æå½ç¨æ·è®¿é® /about.htm ï¼æ¨ç空é´éå¯ä»¥å¹¶ä¸éè¦åå¨ about.htmï¼çæ¶åå®é 访é®çæ¯ /index.html ã
设置æ¹æ³æ¯ï¼
1ãå建ä¸ä¸ªææ¬æ件ï¼å 容为
[ISAPI_Rewrite]
RewriteRule /about\.htm /index\.html
è¿éï¼RewriteRule è¿ä¸è¡å³ä¸ºè§åè¡ï¼è¿ä¸è¡ç±ä¸é¨åç»æï¼ä¸é¨åç±ç©ºæ ¼éå¼ï¼ç¬¬ä¸é¨åå³ RewriteRule è¿å 个åï¼ç¬¬äºé¨å为ç¨æ·è®¿é®çå°åï¼ä½¿ç¨æ£å表达å¼ï¼ï¼ç¬¬ä¸é¨å为å®é åå¨äºæå¡å¨ä¸çæ件路å¾ã
2ãå°ä¸è¿°æ件ä¿åï¼å½å为 å www.name2.com ï¼æ们å®ç°è®©è®¿é® www.name1.com æ¶çå°çæ¯ç½ç«æ ¹ä¸çå 容ï¼èè®¿é® www.name2.com æ¶çå°çæ¯ /name2/ æ件夹ä¸çå 容ã
é£ä¹è®¾ç½®æ¥éª¤å¦ä¸ï¼
1ãå°æ¨çç½ç«æç»åå www.name1.com å www.name2.com ï¼è¿ä¸ªé常éè¦ï¼ä¸¤ä¸ªååé½è¦æç»ãè¿æ¶åå¦æä¸å设置ï¼ä¸¤ä¸ªåå访é®çé½æ¯ç½ç«æ ¹ä¸ã
2ãä¿®æ¹ä¸è¿°é®é¢ä¸ä¸ç
# 表示ä¸ä¸è¡è§ååªå¯¹ www.name2.com çæï¼æ£å表达å¼ä¸ \. 表示 . æ¬èº«ï¼ã
RewriteRule ^(.*)$ /name2/$1 [I]
# 表示å°ææç½é¡µ Rewrite å° name2 æ件夹ä¸ï¼[I]表示忽ç¥å¤§å°åã
请确认ä¸è¿°å 容ä½äº [ISAPI_Rewrite] è¡ä¹ä¸ï¼å¦æåæ¬ç½ç«ä¸åå¨ httpd.ini æ件ï¼è¯·å°ä¸è¿°å 容åé¢å ä¸ [ISAPI_Rewrite] ã
3ãå°ä¿®æ¹åç httpd.ini ä¸ä¼ å°ç½ç«æ ¹ä¸è¦çåæ件ã
éè¿è¿ä¸ªæ¹æ³ï¼æ¨å¯ä»¥å°æç»å¨ç½ç«ä¸çä»»ä½ä¸ä¸ªååéç¨ä»»ä½ç¹å®ç Rewirte è§åï¼å®ç°ç±»ä¼¼æç»åç®å½çåè½å½ç¶ä¹æ¯ä¸å¨è¯ä¸ãè¿æ ·ï¼æ¨ç空é´è½æç»å¤å°ä¸ªååï¼æ¨å°±å¯ä»¥å»ºç«å¤å°ä¸ªå 容ä¸åçç½ç«äºã ngx_http_rewrite_module模åå 许æ£åæ¿æ¢URIï¼è¿å页é¢éå®åï¼åææ¡ä»¶éæ©é ç½®ã
ngx_http_rewrite_module模åæ令æ以ä¸é¡ºåºå¤çï¼ å¤çå¨server级å«ä¸å®ä¹ç模åæä»¤ï¼ ä¸ºè¯·æ±æ¥æ¾locationï¼ å¤çå¨éä¸çlocationä¸å®ä¹ç模åæ令ãå¦ææ令æ¹åäºURIï¼ææ°çURIæ¥æ¾locationãè¿ä¸ªå¾ªç¯è³å¤éå¤æ¬¡ï¼ä¹ånginxè¿åé误 (Internal Server Error)ã æ令 è¯æ³:break;ããé»è®¤å¼:âä¸ä¸æ:server,location,ifããåæ¢å¤çå½åè¿ä¸è½®çngx_http_rewrite_moduleæ令éã
举ä¾ï¼
if ($slow) { limit_rate k; break;} è¯æ³:if(condition) { ... }ããé»è®¤å¼:âä¸ä¸æ:server,locationãã计ç®æå®çconditionçå¼ãå¦æ为çï¼æ§è¡å®ä¹å¨å¤§æ¬å·ä¸çrewrite模åæ令ï¼å¹¶å°ifæ令ä¸çé ç½®æå®ç»è¯·æ±ãifæ令ä¼ä»ä¸ä¸å±é ç½®ä¸ç»§æ¿é ç½®ã
æ¡ä»¶å¯ä»¥æ¯ä¸åä»»æä¸ç§ï¼ åéåï¼å¦æåéå¼ä¸ºç©ºæè æ¯ä»¥â0âå¼å§çå符串ï¼åæ¡ä»¶ä¸ºåï¼ ä½¿ç¨â=âåâ!=âè¿ç®ç¬¦æ¯è¾åéååç¬¦ä¸²ï¼ ä½¿ç¨â~âï¼å¤§å°åææï¼åâ~*âï¼å¤§å°åä¸ææï¼è¿ç®ç¬¦å¹é åéåæ£å表达å¼ãæ£å表达å¼å¯ä»¥å å«å¹é ç»ï¼å¹é ç»æåç»å¯ä»¥ä½¿ç¨åé$1..$9å¼ç¨ãå¦ææ£å表达å¼ä¸å å«å符â}âæè â;âï¼æ´ä¸ªè¡¨è¾¾å¼åºè¯¥è¢«å å«å¨åå¼å·æåå¼å·çå¼ç¨ä¸ã 使ç¨â-fâåâ!-fâè¿ç®ç¬¦æ£æ¥æ件æ¯å¦åå¨ï¼ 使ç¨â-dâåâ!-dâè¿ç®ç¬¦æ£æ¥ç®å½æ¯å¦åå¨ï¼ 使ç¨â-eâåâ!-eâè¿ç®ç¬¦æ£æ¥æ件ãç®å½æ符å·é¾æ¥æ¯å¦åå¨ï¼ 使ç¨â-xâåâ!-xâè¿ç®ç¬¦æ£æ¥å¯æ§è¡æä»¶ï¼ ä¸¾ä¾ï¼
if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break;}if ($http_cookie ~* id=([^;]+)(?:;|$)) { set $id $1;}if ($request_method = POST) { return ;}if ($slow) { limit_rate k;}if ($invalid_referer) { return ;}
å åµåé$invalid_refererçå¼æ¯éè¿valid_referersæ令设置çã è¯æ³:returncode[text];ããreturncodeURL;ããreturnURL;ããé»è®¤å¼:âä¸ä¸æ:server,location,ifããåæ¢å¤ç并è¿åæå®codeç»å®¢æ·ç«¯ãè¿åéæ åçç¶æç å¯ä»¥ç´æ¥å ³éè¿æ¥èä¸è¿åååºå¤´ã
ä»0.8.çå¼å§ï¼å¯ä»¥å¨æ令ä¸æå®éå®åçURLï¼ç¶æç 为ããåï¼ï¼æè æå®ååºä½ææ¬ï¼ç¶æç ä¸ºå ¶å®å¼ï¼ãååºä½ææ¬æéå®åURLä¸å¯ä»¥å å«åéãä½ä¸ºä¸ç§ç¹æ®æ åµï¼éå®åURLå¯ä»¥ç®å为å½åserverçæ¬å°URIï¼é£ä¹å®æ´çéå®åURLå°æç §è¯·æ±åè®®ï¼$schemeï¼ãserver_name_in_redirectæ令åport_in_redirectæ令çé ç½®è¿è¡è¡¥å ¨ã
å¦å¤ï¼ç¶æç 为ç临æ¶éå®å使ç¨çURLå¯ä»¥ä½ä¸ºæ令çå¯ä¸åæ°ã该åæ°åºè¯¥ä»¥âhttp://âãâhttps://âæè âhttps://âå¼å§ãURLä¸å¯ä»¥å å«åéã
0.7.çæ¬ä»¥ååªè½è¿åä¸é¢ç¶æç ï¼ ããâ ããããã å â ã
ç´å°1.1.å1.0.çï¼ç¶æç æ被认为æ¯ä¸ç§éå®åã è¯æ³:rewriteregexreplacement[flag];ããé»è®¤å¼:âä¸ä¸æ:server,location,ifããå¦ææå®çæ£å表达å¼è½å¹é URIï¼æ¤URIå°è¢«replacementåæ°å®ä¹çå符串æ¹åãrewriteæ令æå ¶å¨é ç½®æ件ä¸åºç°ç顺åºæ§è¡ãflagå¯ä»¥ç»æ¢åç»æ令çæ§è¡ãå¦æreplacementçå符串以âhttp://âæâhttps://âå¼å¤´ï¼nginxå°ç»ææ§è¡è¿ç¨ï¼å¹¶è¿åç»å®¢æ·ç«¯ä¸ä¸ªéå®åã
å¯éçflagåæ°å¯ä»¥æ¯å ¶ä¸ä¹ä¸ï¼ last åæ¢æ§è¡å½åè¿ä¸è½®çngx_http_rewrite_moduleæ令éï¼ç¶åæ¥æ¾å¹é æ¹ååURIçæ°locationï¼ break åæ¢æ§è¡å½åè¿ä¸è½®çngx_http_rewrite_moduleæ令éï¼ redirect å¨replacementå符串æªä»¥âhttp://âæâhttps://âå¼å¤´æ¶ï¼ä½¿ç¨è¿åç¶æç 为ç临æ¶éå®åï¼ permanent è¿åç¶æç 为çæ°¸ä¹ éå®åã å®æ´çéå®åURLå°æç §è¯·æ±åè®®ï¼$schemeï¼ãserver_name_in_redirectæ令åport_in_redirectæ令çé ç½®è¿è¡è¡¥å ¨ã
举ä¾ï¼
server { ... rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last; rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last; return ; ...}
ä½æ¯å½ä¸è¿°æ令åå¨â/download/âçlocationä¸æ¶ï¼åºä½¿ç¨æ å¿break代æ¿lastï¼å¦ånginxä¼éå¤è½®å¾ªç¯ï¼ç¶åè¿åé误ï¼
location /download/ { rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break; rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break; return ;}
å¦æreplacementå符串å æ¬æ°ç请æ±åæ°ï¼ä»¥å¾ç请æ±åæ°ä¼æ·»å å°æ°åæ°åé¢ãå¦æä¸å¸æè¿æ ·ï¼å¨replacementå符串æ«å°¾å ä¸ä¸ªé®å·âï¼âï¼å°±å¯ä»¥é¿å ï¼æ¯å¦ï¼
rewrite ^/users/(.*)$ /show?user=$1? last;
å¦ææ£å表达å¼ä¸å å«å符â}âæè â;âï¼æ´ä¸ªè¡¨è¾¾å¼åºè¯¥è¢«å å«å¨åå¼å·æåå¼å·çå¼ç¨ä¸ã è¯æ³:rewrite_logon|off;ããé»è®¤å¼:rewrite_log off;ä¸ä¸æ:http,server,location,ifããå¼å¯æè å ³éå°ngx_http_rewrite_module模åæ令çå¤çæ¥å¿ä»¥notice级å«è®°å½å°é误æ¥å¿ä¸ã è¯æ³:setvariablevalue;ããé»è®¤å¼:âä¸ä¸æ:server,location,ifãã为æå®åévariable设置åéå¼valueãvalueå¯ä»¥å å«ææ¬ãåéæè å®ä»¬çç»åã è¯æ³:uninitialized_variable_warnon|off;ããé»è®¤å¼:uninitialized_variable_warn on;ä¸ä¸æ:http,server,location,ifããæ§å¶æ¯å¦è®°å½åéæªåå§åçè¦åå°æ¥å¿ã
å é¨å®ç°
ngx_http_rewrite_module模åçæ令å¨è§£æé ç½®é¶æ®µè¢«ç¼è¯ænginxå é¨æ令ãè¿äºå é¨æ令å¨å¤ç请æ±æ¶è¢«è§£éæ§è¡ãè解éå¨æ¯ä¸ä¸ªç®åçå æ æºå¨ã
æ¯å¦ï¼ä¸é¢æ令
location /download/ { if ($forbidden) { return ; } if ($slow) { limit_rate k; } rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break;}
å°è¢«ç¿»è¯æä¸é¢è¿äºæ令ï¼
variable $forbiddencheck against zero return end of codevariable $slowcheck against zeromatch of regular expressioncopy /copy $1copy /mp3/copy $2copy .mp3end of regular expressionend of code
请注æ没æ对åºä¸é¢çlimit_rateæ令çå é¨æ令ï¼å 为è¿ä¸ªæ令ä¸ngx_http_rewrite_module模åæ å ³ãnginxä¼ä¸ºè¿ä¸ªifååç¬å建ä¸ä¸ªé ç½®ï¼å å«limit_rateçäºkãå¦ææ¡ä»¶ä¸ºçï¼nginxå°æè¿ä¸ªé ç½®ææ´¾ç»è¯·æ±ã
æ令
rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break;
å¯ä»¥éè¿å°æ£å表达å¼ä¸ç第ä¸ä¸ªæ线â/âæ¾å ¥åæ¬å·ï¼æ¥å®ç°è约ä¸ä¸ªå é¨æ令ï¼
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
对åºçå é¨æ令å°ä¼æ¯è¿æ ·ï¼
match of regular expressioncopy $1copy /mp3/copy $2copy .mp3end of regular expressionend of code