Nginx基礎模塊使用

1、nginx用戶認證

對某一個目錄進行匹配驗證,如對/uc_server/目錄訪問時的用戶認證。當目錄下有php文件時,需要增加對php解析的配置。
生成密碼文件:

htpasswd -c -m /usr/local/nginx/conf/htpasswd test

這樣就添加了test用戶,第一次添加時需要加-c參數,第二次添加時不需要-c參數,在nginx的虛擬主機配置文件(/usr/local/nginx/conf/vhosts/*.conf)中添加如下配置:
.

location /uc_server/ {
                                  auth_basic            "Auth";
                                  auth_basic_user_file    /usr/lcoal/nginx/conf/htpasswd;
                                  include fastcgi_params;
                                  fastcgi_pass unix:/tmp/php-fcgi.sock;
                                  fastcgi_index index.php;
                                  fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
                                }

這樣就會把請求/uc_server/的訪問給限制了,只有輸入用戶名和密碼纔可以繼續訪問,基本上和apache的配置類似。

htpasswd工具需要安裝http,直接使用yum install httpd
以下是針對用戶管理後臺進行用戶認證配置:
Nginx基礎模塊使用

2、nginx域名跳轉

在虛擬主機配置文件(/usr/local/nginx/conf/vhosts/*.conf)進行域名跳轉配置:

if ($host!='www.a.com') {
rewrite ^/(.*)$ http://www.a.com/$1 permanent;
}

Nginx基礎模塊使用

3、 nginx不記錄指定文件類型日誌、配置靜態文件過期時間

在nginx.conf的日誌相關配置
①日誌的格式
在nginx.conf中定義日誌的格式。配置如下:
log_format main '$remote_addr - $remote_user [$time_local] $request'
                           '"$status" $body_bytes_sent "$http_referer"'
                           '"$http_user_agent" "$http_x_forwarded_for"';

下面的日誌格式,會記錄代理的ip和真實客戶端真實ip,建議可以使用如下配置:
log_format main '$proxy_add_x_forwarded_for - $remote_user [time_local]'
                           '"$request" $status $body_bytes_sent'
                           '"$http_referer" "$http_user_agent"';

②錯誤日誌error_log日誌級別
error_log級別分爲:debug,info,notice,warn,error,crit
默認爲crit,該級別在日誌名後邊定義格式如下:
error_log /your/path/error.log crit;

③某些類型的文件不記錄日誌
這個就比Apache要簡單得多,配置如下:
location ~.*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
{
expires 30d;       //配置圖片緩存時間
access_log off;    //表示不記錄gif|jpg等類型文件
}

location ~ .*\.(js|css)$
{
     expires 12h;     //配置圖片緩存時間
     access_log off;
}

★★★過期時間指的是圖片會在瀏覽器存儲指定時間,超過這個時間就會重新刷新,配置緩存的目的是爲了
讓網站的訪問速度更加快,節省帶寬。

4、nginx配置防盜鏈

location ~.*\.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2)$
{
               expires 30d;       //配置圖片緩存時間
               access_log off;    //表示不記錄gif|jpg等類型文件
               valid_referers none blocked servernames *.taobao.com *.baidu.com *.google.com;
               if ($invalid_referer )
               {
                        return 403;
                        rewirte ^/http://www.example.com/nophoto.gif;
               }
}

valid_referers是可用的來源鏈,none bolocked server_names是不進行防盜的主機域名,加起來是對於這些可用的鏈接不進行攔截而是加入白名單。
$invalid_referer,這裏用$作爲一個變量,變量名是不可用的來源鏈,和可用的正好相反
盜用我們圖片的人訪問這些圖片時會跳轉到http://www.example.com/nophoto.gif,也可以直接顯示403,這樣更節省資源。

5、nginx訪問控制

限制只讓某個ip訪問,加如下配置:
allow        192.168.1.101;
deny         all;
禁止某個ip或者ip段訪問站點的設置方法,首先建立下面的配置文件放在nginx的conf目錄下面,命名deny.ip
cat deny.ip
deny   192.168.1.11;
deny   192.168.1.123;
deny   10.0.1.0/24;
在對應的虛擬主機配置文件中加入:
include deny.ip;
重啓一下nginx服務:
# /usr/local/nginx/sbin/nginx reload
deny.ip的格式中也可以用deny all;
如果像實現這樣的應用,除了幾個ip外,其他的全部拒絕,那你需要在deny.ip中這樣寫
allow 1.1.1.1;
allow 1.1.1.2;
deny all;
有時候會根據目錄來限制php解析:
location ~ .* (diy|template|attachements|forumdata|attachment|image)/.*\.php$
{
        deny all;
}

--------------------------------------------------------------------------------------------------------
視頻內容:
針對admin.php進行訪問控制設置,只允許本機進行訪問,需要用location匹配規則進行設置,如下:

Nginx基礎模塊使用

對於整個網站的全局配置,只需要在虛擬主機配置文件中增加規則即可,如下:

Nginx基礎模塊使用

針對整個網段進行訪問控制配置:

Nginx基礎模塊使用

6、生成SSL密鑰加密網站

SSL加密網站的核心技術是非對稱生成密鑰
--公鑰、私鑰、證書
# openssl genrsa -out cert.key 2048     //生成私鑰
# openssl req -new -x509 -key cert.key -out cert.pem     //生成證書
# cp {cert.key,cert.pem} /usr/local/nginx/conf/       //拷貝證書

SSL加密網站
server {                                                                   //定義虛擬主機
            listen    443;
            server_name  www.test.com;
            ssl on;                                                         //開啓SSL
            ssl_certificate    cert.pem;                          //指定證書文件
            ssl_certficate     cert.key;                           //指定私鑰文件
            ssl_session_timeout 5m;
            ssl_protocols SSLv2 SSLv3 TLSv1;
            ssl_ciphers HIGH:!aNULL:!MD5;
            ssl_perfer_server_ciphers on;
            location / {
            root html;
            index index.html index.htm;
            }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章