nginx中server_name配置域名不生效
前段時間剛搭建好個人網(wǎng)站,一直沒有關(guān)注一個問題,那就是IP地址也可以訪問我的網(wǎng)站,今天就專門研究了一下nginx配置問題,爭取把這個問題研究透徹。
1. nginx配置域名及禁止直接通過IP訪問
先來看nginx的默認(rèn)配置,ubuntu默認(rèn)位置 /etc/nginx/sites-enabled 。
(注意:sites-enabled里的配置其實是軟鏈接,鏈接到sites-available下的真實配置,這是nginx的一種最佳實踐,希望我們在sites-available下修改配置,等修改好以后在鏈接到sites-enabled下,不過我這里沒采納這種最佳實踐,直接在sites-enabled目錄下增加配置,哈哈。)
# default
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
}最簡單的配置nginx的方式就是直接改這個default文件,加上自己的網(wǎng)站配置:
# default
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.domain.com;
root /path/to/www.domain.com;
index index.html index.htm;
}不過,不推薦這種方式。如果這樣配置,惡意用戶可以用自己的域名指向我們的IP,蹭我們的流量,來養(yǎng)他的域名,非常討厭。
我更推薦把這個配置復(fù)制一份,在復(fù)制的配置里修改網(wǎng)站信息。
cp default domain-website
然后修改信息:
# domain-website
server {
listen 80; # 去掉這里的default_server
listen [::]:80; # 去掉這里的default_server
server_name www.domain.com; # 修改自己的域名
root /path/to/www.domain.com; # 指向網(wǎng)站文件根目錄
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}這樣配置就很靈活了,方便我們禁止IP訪問和別人把域名惡意指向我們的IP。
想要禁止IP訪問的話,就修改default配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 500; # 添加這句,當(dāng)用IP訪問時,返回500錯誤碼
}這也同樣可以阻止別人惡意把域名指向我們的服務(wù)器IP,蹭我們的流量。
2. 配置https
如果是配置了https,我們就增加一個default-ssl配置文件:
# default-ssl
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
#ssl on;
ssl_certificate cert/www.domain.com.pem; # SSL證書和密鑰
ssl_certificate_key cert/www.domain.com.key;
server_name _;
return 500;
}注意:一定要加上自己的SSL證書和密鑰,不然會導(dǎo)致域名的https無法訪問。
正常網(wǎng)站https配置:
# domain-website-ssl
server {
listen 443;
listen [::]:443;
ssl on;
ssl_certificate cert/www.domain.com.pem; # SSL證書和密鑰
ssl_certificate_key cert/www.domain.com.key;
ssl_session_timeout 30m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
server_name www.domain.com; # 域名
root /path/to/www.domain.com; # 網(wǎng)站文件根目錄
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}3. 如何解決別人域名惡意指向自己服務(wù)器IP的問題以及搜集流量
如果按照我上面的配置方法,那么就不怕別人把域名指向我們的IP了。要是在應(yīng)用上述配置之前就已經(jīng)有惡意域名指向我們IP了,怎么辦呢,沒問題,我們可以把這些域名重定向到我們自己的域名,相當(dāng)于把這些流量都搜集起來,導(dǎo)入到自己的域名。
對default和default_ssl做如下修改:
# default
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
#return 500; # 添加這句,當(dāng)用IP訪問時,返回500錯誤碼
return 301 https://www.domain.com; //把IP和其他域名訪問的流量永久重定向到我們的域名
}和:
# default_ssl
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
#ssl on;
ssl_certificate cert/www.domain.com.pem; # SSL證書和密鑰
ssl_certificate_key cert/www.domain.com.key;
server_name _;
return 500;
return 301 https://www.domain.com; //把IP和其他域名訪問的流量永久重定向到我們的域名
}還可以把自己域名http重定向到https:
server {
listen 80;
listen [::]:80;
server_name www.domain.com;
return 301 https://$server_name$request_uri;
}至此,就解決了被別人用域名惡意蹭流量的問題。
到此這篇關(guān)于nginx中server_name配置域名不生效的文章就介紹到這了,更多相關(guān)nginx server_name域名不生效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx中使用Lua腳本與圖片的縮略圖處理的實現(xiàn)
本文主要介紹了Nginx中使用Lua腳本與圖片的縮略圖處理的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
Nginx禁止國外IP訪問我的網(wǎng)站的實現(xiàn)
本文主要介紹了Nginx禁止國外IP訪問我的網(wǎng)站的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
詳解nginx服務(wù)器http重定向到https的正確寫法
本篇文章主要介紹了nginx服務(wù)器http重定向到https的正確寫法 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
修改nginx服務(wù)器類型實現(xiàn)簡單偽裝(隱藏nginx類型與版本等)
這篇文章主要介紹了修改nginx服務(wù)器類型實現(xiàn)簡單偽裝(隱藏nginx類型與版本等),需要的朋友可以參考下2016-03-03
Nginx?502?bad?gateway錯誤解決的九種方案及原因
一般在訪問某些網(wǎng)站或者我們在做本地測試的時候,服務(wù)器突然返回502?Bad?Gateway?Nginx,這種問題相信大家也遇到不少了,下面這篇文章主要給大家介紹了關(guān)于Nginx?502?bad?gateway錯誤解決的九種方案及原因,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08

