筆記內容:php
筆記日期:2017.10.19html
<br>nginx
建立虛擬主機配置文件:vim
vim /usr/local/nginx/conf/vhost/test.com.confcurl
文件內容以下:ide
server { listen 80; server_name test.com; index index.html index.htm index.php; root /data/wwwroot/test.com; location / { auth_basic "Auth"; //定義用戶認證的名稱 auth_basic_user_file /usr/local/nginx/conf/htpasswd; //用戶名和密碼文件的路徑 } }
建立test.com目錄:測試
mkdir /data/wwwroot/test.comurl
建立一個索引頁文件:.net
echo "test.com" > /data/wwwroot/test.com/index.html3d
安裝httpd:
yum install -y httpd
而後使用httpd裏的htpasswd 命令去生成一個用戶密碼文件:
htpasswd -c /usr/local/nginx/conf/htpasswd user1
生成完成後cat一下htpasswd 文件能夠看到以下內容:
若是再次添加用戶的話就不須要加上-c選項了,加上-c選項會覆蓋原來的htpasswd 文件。
生成完用戶密碼文件以後,就從新加載配置文件:
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
使用curl命令測試一下是否配置成功,狀態碼爲401表明成功:
而後使用-u指定用戶名和密碼去訪問,狀態碼爲200表明成功:
以上咱們配置的是整個站點的用戶認證,可是若是不須要整個站點都要用戶認證,只有單獨的某個站點下的目錄須要進行用戶認證,那麼如何配置?
示例:
例如我要指定對admin目錄進行用戶認證,修改虛擬主機配置文件如如下內容便可:
如今訪問test.com就不會須要進行用戶認證了,能夠看到狀態碼爲200:
可是訪問test.com下的admin目錄就會須要進行用戶認證了,能夠看到狀態碼爲401:
這時候就須要指定用戶名和密碼才能訪問這個目錄了。
<br>
除了控制目錄外,還能夠控制目錄下的文件,例如我要控制訪問admin.php文件時須要進行用戶認證,修改虛擬主機配置文件如如下內容:
~ 表示根,表示整個站點
這時候使用curl訪問admin目錄下的admin.php文件時就須要進行用戶認證了,能夠看到狀態碼爲401:
<br>
修改配置文件爲如下內容:
server { listen 80; server_name test.com test1.com test2.com; index index.html index.htm index.php; root /data/wwwroot/test.com; if ($host != 'test.com' ) { rewrite ^/(.*)$ http://test.com/$1 permanent; } }
從新加載配置文件:
使用curl訪問test2.com,狀態碼爲301,而且重定向的目標域名是test.com就表明成功了:
<br>
nginx.conf 配置詳解
http://www.ha97.com/5194.html
http://my.oschina.net/duxuefeng/blog/34880
<br>
nginx rewrite四種flag
http://www.netingcn.com/nginx-rewrite-flag.html
http://unixman.blog.51cto.com/10163040/1711943