1. 程式人生 > >2018.3.13 12周2次課

2018.3.13 12周2次課

Linux學習

十二周二次課(3月13日)

12.6 Nginx安裝

12.7 默認虛擬主機

12.8 Nginx用戶認證

12.9 Nginx域名重定向

12.6 Nginx安裝

  • 下載和解壓:

cd /usr/local/src

wget http://nginx.org/download/nginx-1.13.9.tar.gz

tar -zxvf nginx-1.13.9.tar.gz

  • 配置編譯選項

cd nginx-1.13.9

./configure --prefix=/usr/local/nginx

  • 編譯和安裝

make && make install

技術分享圖片

技術分享圖片

  • 創建配置文件和啟動腳本

vim /etc/init.d/nginx

chmod 755 /etc/init.d/nginx

技術分享圖片

chkconfig --add nginx

chkconfig nginx on

  • 更改配置文件

cd /usr/local/nginx/conf

mv nginx.conf nginx.conf.1 //不用系統自帶的,我們自己建立以新的。也可以清空原來的配置文件,用命令:>/usr/local/nginx/conf/nginx.conf

vim nginx.conf

技術分享圖片

  • 啟動

service nginx start

技術分享圖片

  • 測試

curl localhost

技術分享圖片

能訪問到時因為在配置文件 nginx.conf裏默認主機頁裏,設置了如下的設置

技術分享圖片

技術分享圖片

技術分享圖片

  • 測試php解析

我們在配置文件裏也配置了解析php:

技術分享圖片

vi /usr/local/nginx/html/1.php //加入如下內容

<?php

echo "This is nginx test page.";

?>

技術分享圖片

技術分享圖片

12.7 默認虛擬主機

在nginx中也又默認虛擬主機,跟httpd類似,第一個被nginx加載的虛擬主機就是默認主機。但和httpd不相同的地方時,它還有一個配置用來標記默認虛擬主機。也就是說,如果沒有這個標記,第一個虛擬主機為默認虛擬主機。

修改主配置文件:vim /usr/local/nginx/conf/nginx.conf //註釋掉server。在結束符號 } 上面增加一行:include vhost/*.conf; 。

這樣/usr/local/nginx/conf/vhost/下面所有以.conf結尾的文件都會加載。我們就可以包所有虛擬主機配置文件放到vhost目錄下面

技術分享圖片

vhost目錄在conf目錄下,如果沒有就創建一個,

技術分享圖片

vim aaa.com.conf //編輯虛擬主機aaa.com配置文件

server

{

listen 80 default_server; // 有這個標記的就是默認虛擬主機

server_name aaa.com; //主機名

index index.html index.htm index.php; //指定索引頁

root /data/wwwroot/default; //網址的路徑

}

測試:

mkdir -p /data/wwwroot/default/ //創建default目錄

echo “This is a default site.”>/data/wwwroot/default/index.html //定義index.html

/usr/local/nginx/sbin/nginx –t //檢查語法錯誤

技術分享圖片

/usr/local/nginx/sbin/nginx -s reload //重新加載服務,好處是當配置文件裏有錯誤時是不會生效的

技術分享圖片

12.8 Nginx用戶認證

  • 訪問網站時需要認證:

創建一個虛擬主機:vim /usr/local/nginx/conf/vhost/test.com.conf //寫入如下內容

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; //用戶名密碼文件所在位置

}

}

要用到apache的htpasswd文件來創建用戶名密碼文件

/usr/local/apache2.4/bin/htpasswd -c /usr/local/nginx/conf/htpasswd aming

技術分享圖片

創建第二個:/usr/local/apache2.4/bin/htpasswd /usr/local/nginx/conf/htpasswd user1

技術分享圖片

-t && -s reload //測試配置並重新加載

技術分享圖片

測試:

curl -x127.0.0.1:80 test.com -I //狀態碼為401,說明訪問的內容需要用戶認證

技術分享圖片

技術分享圖片

curl -x127.0.0.1:80 -uaming:123456 test.com //狀態碼404,因為沒有創建index.html

技術分享圖片

技術分享圖片

創建目錄:mkdir /data/wwwroot/test.com

創建index.html:echo “test.com”>/data/wwwroot/test.com/index.html

技術分享圖片

  • 訪問目錄時需要認證:目錄名admin

vim /usr/local/nginx/conf/vhost/test.com.conf //編輯test.com.conf

server

{

listen 80;

server_name test.com;

index index.html index.htm index.php;

root /data/wwwroot/test.com;

location /admin/ //更改目錄名字為admin

{

auth_basic "Auth";

auth_basic_user_file /usr/local/nginx/conf/htpasswd;

}

}

技術分享圖片

訪問網站時,不需要指定用戶名和密碼

技術分享圖片

訪問admin目錄時,需要用戶名和密碼

技術分享圖片

創建admin目錄:mkdir /data/wwwroot/test.com/admin

創建admin目錄下的index.htm:echo “test.com admin dir”>/data/wwwroot/test.com/admin/index.html

技術分享圖片

  • 訪問文件時需要認證:文件名admin,php

vim /usr/local/nginx/conf/vhost/test.com.conf //編輯test.com.conf

server

{

listen 80;

server_name test.com;

index index.html index.htm index.php;

root /data/wwwroot/test.com;

location ~ admin.php //~:匹配,匹配admin.php

{

auth_basic "Auth";

auth_basic_user_file /usr/local/nginx/conf/htpasswd;

}

}

技術分享圖片

訪問目錄時,不需要指定用戶名和密碼

技術分享圖片

訪問文件時,需要指定用戶名和密碼

技術分享圖片

12.9 Nginx域名重定向

Nginx的域名重定向和httpd的類似

更改配置文件:vim /usr/local/nginx/conf/vhost/test.com.conf

server

{

listen 80;

server_name test.com test1.com test2.com; // server_name後面支持寫多個域名。httpd:ServerName後面只有1個域名,ServerAlias後面跟多個域名,

index index.html index.htm index.php;

root /data/wwwroot/test.com;

if ($host != 'test.com' ) {

rewrite ^/(.*)$ http://test.com/$1 permanent; permanent為永久重定向,狀態碼為301,如果寫redirect則為302

}

}

技術分享圖片

測試:

查看狀態碼:301,

重定向到(最後一行):

技術分享圖片

技術分享圖片


2018.3.13 12周2次課