看了很多Nginx的配置,好像都忽略了ip直接訪問web的問題,這樣理論上不利於SEO優化,所以我們希望可以避免直接用IP訪問網站,而是域名訪問,具體怎麼做呢,看下面。
官方文檔中提供的方法:
If you do not want to process requests with undefined “Host” header lines, you may define a default server that just drops the requests:
server {
listen 80 default_server;
server_name _;
return 444;
}
說白了就是只要是訪客用ip訪問就直接重置444錯誤。但是這樣好像又不太友好,如果能直接給跳轉到該web server的網址就好了。配置如下:
server {
listen 80 default_server;
server_name _;
rewrite ^ http://www.domain.com$request_uri?;
}
這樣還是有一點問題,某些特別的地址,我需要用ip訪問,其他的都禁止,如何配置呢?比如說我想讓監控寶直接用ip訪問我的機器的nginx狀態信息,其他的用ip訪問的所有請求都跳轉到域名上。
server {
listen 80 default_server;
server_name _;
location /xxxxx{
stub_status on;
access_log off;
}
location /{
rewrite ^ http://www.domain.com$request_uri?;
}
}