一、nginx配置用户认证
需要先安装Apache,可以使用yuminstallhttpd安装;或者在另一台机器上创建一个.htpasswd文件,并将其复制到服务器上;
创建用户并生成密码文件:
/usr/local/Apache2/bin/htpasswd-c/usr/local/nginx/conf/。htpasswd测试
//添加测试用户,第一次添加需要添加-c参数,第二次添加不需要-c参数;
访问指定目录以配置用户身份验证:
添加到nginx的默认配置文件中,红色部分是指定在哪个目录下设置用户认证。
位置/a/{
Auth_basic“Auth”;
auth_basic_user_file/usr/local/nginx/conf/。htpasswd
}
实验,用curl分析/a/目录下的index.html为401未认证;用-u用户名和密码登录后200OK
[root@localhost vhosts]# curl -x127.0.0.1:80 192.168.20.30/a/index.html -I HTTP/1.1 401 Unauthorized Server: nginx/1.6.2 Date: Thu, 14 May 2015 09:48:18 GMT Content-Type: text/html Content-Length: 194 Connection: keep-alive WWW-Authenticate: Basic realm="Auth" [root@localhost vhosts]# curl -utest:1234 -x127.0.0.1:80 192.168.20.30/a/index.html -I HTTP/1.1 200 OK Server: nginx/1.6.2 Date: Thu, 14 May 2015 09:48:26 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Thu, 14 May 2015 09:27:34 GMT Connection: keep-alive ETag: "55546a86-264" Accept-Ranges: bytes访问admin.php后台,设置用户认证;认证的代码要写在匹配的php前面,解析php的代码也要加上;
网页测试登录admin.php页面会d出认证对话框,只有输入用户名和密码才能访问。
如果不指定根目录直接使用认证,打开首页d出的对话框进行认证;
位置/{
Auth_basic“Auth”;
auth_basic_user_file/usr/local/nginx/conf/。htpasswd
二。配置域名重定向
将以下代码添加到nginx的默认虚拟主机配置中:
服务器名11.com·22.com·www.111.com;
if($host!='www.111.com'){
重写^/(.*)$http://www.111.com/永久;
}
永久永久重定向301;
测试:如果你访问11.com22.com,你将跳转到位置:www.111.com;
[root@localhost vhosts]# curl -x127.0.0.1:80 11.com -I HTTP/1.1 301 Moved Permanently Server: nginx/1.6.2 Date: Thu, 14 May 2015 22:15:16 GMT Content-Type: text/html Content-Length: 184 Connection: keep-alive Location: http://www.111.com/ [root@localhost vhosts]# curl -x127.0.0.1:80 22.com -I HTTP/1.1 301 Moved Permanently Server: nginx/1.6.2 Date: Thu, 14 May 2015 22:15:21 GMT Content-Type: text/html Content-Length: 184 Connection: keep-alive Location: http://www.111.com/三。配置日志记录
日志格式,main是定义的日志格式名称;日志格式要添加到nginx.conf主配置文件的http部分;
log_formatmain'$remote_addr-$remote_user[$time_local]$request'
"$status"$body_bytes_sent"$http_referer""
“$http_user_agent”“$http_x_forwarded_for”;
log_formatmain1'$proxy_add_x_forwarded_for-$remote_user[$time_local]'
"$request"$status$body_bytes_sent"
“$http_referer”“$http_user_agent”;
//这个日志的格式是ip不仅记录了代理的ip,还记录了远程客户端的真实IP。
添加访问日志的格式,写入default.conf的最后一行;
server { listen 80 default; server_name localhost; index index.html index.htm index.php; root /usr/local/nginx/html; location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; } access_log /home/logs/xxx.log combined_realip; }Combined_realip为nginx.conf定义的日志格式的名称
使用卷曲测试后,一个新的日志;已生成;
[root@localhost vhosts]# curl -x127.0.0.1:80 192.168.20.30/index.html -I [root@localhost vhosts]# cat /home/logs/xxx.log 127.0.0.1 - [15/May/2015:15:13:49 +0800]192.168.20.30 "/index.html" 200"-" "curl/7.19.7 (i386-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2"错误日志error_log日志级别:
Error_log级别分为debug、info、notice、warn、Error,crit默认为crit。此级别在日志名称后以以下格式定义:error_log/your/path/error.logcrit;
Crit日志最少,debug日志最多。如果你遇到nginx的一些问题,比如502频繁出现,但是看默认的error_log没有看到有意义的信息,那么你可以调整错误日志的级别。当你调整到错误级别时,错误日志的内容会更加丰富。
四。静态文件(图片、flash、js、css)不记录日志,配置缓存;
位置~。*\.(gif|jpg|jpeg|png|bmp|swf)$
{
过期30d
access_logoff
}
位置~。*\.(js|css)?$
{
到期12小时;
access_logoff
}
Expires定义缓存时间;
Access_logoff不记录;
测试:触摸1.jpg2.js文件,用curl测试cache-control作为缓存时间;
[root@localhost vhosts]# touch /usr/local/nginx/html/1.jpg [root@localhost vhosts]# curl -x127.0.0.1:80 www.111.com/1.jpg -I HTTP/1.1 200 OK Server: nginx/1.6.2 Date: Thu, 14 May 2015 22:11:45 GMT Content-Type: p_w_picpath/jpeg Content-Length: 0 Last-Modified: Thu, 14 May 2015 22:11:41 GMT Connection: keep-alive ETag: "55551d9d-0" Expires: Sat, 13 Jun 2015 22:11:45 GMT Cache-Control: max-age=2592000 Accept-Ranges: bytes [root@localhost vhosts]# touch /usr/local/nginx/html/2.js [root@localhost vhosts]# curl -x127.0.0.1:80 www.111.com/2.js -I HTTP/1.1 200 OK Server: nginx/1.6.2 Date: Thu, 14 May 2015 22:11:00 GMT Content-Type: application/javascript Content-Length: 0 Last-Modified: Thu, 14 May 2015 22:10:53 GMT Connection: keep-alive ETag: "55551d6d-0" Expires: Fri, 15 May 2015 10:11:00 GMT Cache-Control: max-age=43200 Accept-Ranges: bytes五、防盗链
将以下代码添加到nginx默认主机的default.conf中的server部分:
//不要从淘宝、百度、谷歌、搜搜等有域名的网站上盗取外链。如果不是指定的域名,则返回403错误;或者跳转到自定义图片;
地点~*^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|JPEG|BMP|xls)${
valid_referersnoneblockedserver_names*.Taobao.com*.Baidu.com*.Google.com*.Google.cn*.soso.com;
if($invalid_referer){
返回403;
#重写http://www.example.com/nophoto.gif;^/
}
}
~*表示不区分大小写的匹配;
如果一个配置文件中有~个匹配项,则只匹配最上面的一个;把图片文件的缓存和不记录日志的代码放入~match,两者都生效;
地点~*^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|JPEG|BMP|xls)${
expires10d;
valid_referersnoneblockedserver_names*.1.com*.a.com*.b.com*.Baidu.com\
*.Google.com*.Google.cn*.soso.com;
if($invalid_referer){
return403;
#重写http://www.example.com/nophoto.gif;^/
}
access_logoff;
}
使用curl-e测试,需要添加http://用qq.com访问图片显示403错误;用1.com是200OK防盗链验证成功;
[root@localhost vhosts]# curl -x127.0.0.1:80 -e "http://www.qq.com" 192.168.20.30/1.jpg -I HTTP/1.1 403 Forbidden Server: nginx/1.6.2 Date: Fri, 15 May 2015 08:28:07 GMT Content-Type: text/html Content-Length: 168 Connection: keep-alive [ root@localhost vhosts]# curl -x127.0.0.1:80 -e "http://www.1.com" 192.168.20.30/1.jpg -I HTTP/1.1 200 OK Server: nginx/1.6.2 Date: Fri, 15 May 2015 08:28:16 GMT Content-Type: p_w_picpath/jpeg Content-Length: 0 Last-Modified: Fri, 15 May 2015 07:55:55 GMT Connection: keep-alive ETag: "5555a68b-0" Accept-Ranges: bytes欢迎分享,转载请注明来源:内存溢出
评论列表(0条)