使用Apache的server-status,禁止IP訪問服務器

PS.因爲直接訪問http://www.xxx.com/server-status可以直接看到Apache配置信息,爲了避免出現信息泄露問題,最好不要打開server-status

1、確認Apache已經安裝status模塊:

httpd.conf中查看LoadModule status_module modules/mod_status.so是否開啓(前面是否有#);

PS.如果Apache沒有加載這個模塊,如果是linux服務器,就得重新編譯Apache,加上–enable-module=so參數即可;如果你是Windows系統的話,無需任何編譯,只要把剛纔時候說的LoadModule status_module modules/mod_status.so這句加上,如果前面有帶#號,開啓的話,需要將#去除。

2、配置Apache Server Status:

修改httpd.conf,在最後加上server-status的配置:

<IfModule status_module>
        <Location /server-status>
                SetHandler server-status
                Order Deny,Allow
                Deny from all
                #Allow from all
        </Location>
</IfModule>

上面的配置指定的是禁止訪問server-status,如果你想開啓server-status,在Deny from all前面加上#,去掉Allow from all前面的#即可。

3、禁止IP訪問Apache服務器:

按照之前搭建lanmp的步驟,Apache虛擬站點配置文件是http-vhost.conf,所以修改vi /etc/apacheconf/extra/httpd-vhosts.conf,在最前面加入如下虛擬站點:

<VirtualHost 127.0.0.1:80>
        ServerName 服務器ip地址
        <Directory />
                Order Allow,Deny
                Deny from all
        </Directory>
</VirtualHost>

保存退出,重啓Apache服務,這樣就就可以屏蔽通過ip訪問站點的操作,但是配置其它Apache虛擬站點的時候ServerName再使用localhost就無效了,必須用域名。

4、修改nginx的配置文件,禁止ip訪問nginx服務:

按照之前的教程,只需要修改nginx.conf即可:
nginx.conf中找到include vhost/*.conf;,在此之前添加一個server,內容如下:

server
    {
        listen 外網IP:80 default;
        server_name _;
        #return 403;
        rewrite ^(.*) http://xxx.com permanent;
    }

重啓nginx,這樣所有通過ip訪問nginx服務器的時候都會被rewrite到設定的域名下,需要注意的是,同Apache虛擬站點配置一樣,設定了禁止ip訪問之後,nginx虛擬站點的server_name也不能使用localhost,這樣不管通過ip訪問nginx還是Apache服務都是屏蔽狀態,在上面的配置文件中可以直接返回一個錯誤狀態,也可以直接跳轉到一個指定的網址,看個人喜好。

發佈了24 篇原創文章 · 獲贊 22 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章