最近我安装了 VESTACP 和 nginx,添加了域名,一切都很好,我可以通过域名访问我的网站,但当我从服务器输入 IP 地址时(http://11.11.11.11) 我可以访问我的网站,有什么解决方案可以避免显示我的 IP 地址吗?
感谢你们
这是我的 nginx conf 文件:
listen 11.11.3.171:80;
server_name example.com www.example.com;
error_log /var/log/apache2/domains/example.com.error.log error;
location / {
proxy_pass http://11.11.3.171:8080;
location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
root /home/admin/web/example.com/public_html;
access_log /var/log/apache2/domains/example.com.log combined;
access_log /var/log/apache2/domains/example.com.bytes bytes;
expires max;
try_files $uri @fallback;
}
}
location /error/ {
alias /home/admin/web/example.com/document_errors/;
}
location @fallback {
proxy_pass http://11.11.3.171:8080;
}
location ~ /\.ht {return 404;}
location ~ /\.svn/ {return 404;}
location ~ /\.git/ {return 404;}
location ~ /\.hg/ {return 404;}
location ~ /\.bzr/ {return 404;}
include /home/admin/conf/web/nginx.example.com.conf*;
}
Apache 配置文件:
<VirtualHost 11.11.3.171:8080>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /home/admin/web/example.com/public_html
ScriptAlias /cgi-bin/ /home/admin/web/example.com/cgi-bin/
Alias /vstats/ /home/admin/web/example.com/stats/
Alias /error/ /home/admin/web/example.com/document_errors/
#SuexecUserGroup admin admin
CustomLog /var/log/apache2/domains/example.com.bytes bytes
CustomLog /var/log/apache2/domains/example.com.log combined
ErrorLog /var/log/apache2/domains/example.com.error.log
<Directory /home/admin/web/example.com/public_html>
AllowOverride All
Options +Includes -Indexes +ExecCGI
php_admin_value open_basedir /home/admin/web/example.com/public_html:/home/admin/tmp
php_admin_value upload_tmp_dir /home/admin/tmp
php_admin_value session.save_path /home/admin/tmp
</Directory>
<Directory /home/admin/web/example.com/stats>
AllowOverride All
</Directory>
<IfModule mod_ruid2.c>
RMode config
RUidGid admin admin
RGroups www-data
</IfModule>
<IfModule itk.c>
AssignUserID admin admin
</IfModule>
IncludeOptional /home/admin/conf/web/apache2.example.com.conf*
</VirtualHost>
答案1
作为域名系统只是一个将域名解析为 IP 地址的协议,你不能真正隐藏你的地址。
但是您可以使用 nginx 仅使用适当的名称来回答请求。
在您的 nginx.conf (或 sites-config)中检查listen
和server_name
指令:
server {
listen 80;
server_name yourserver.com www.yourserver.com;
...
}
在 Nginx 配置文件中,您可以拥有多个服务器“{}”块。传入请求将按照server_name
从上到下的方式与指令进行匹配。
在多个服务器块的情况下,如果请求针对的是不存在的域,那么它将始终由第一的服务器块。
如果你想堵塞来自任何其他(又称“未被现有块捕获”)地址的请求,只需添加以下服务器块来捕获它们:
server {
listen 80 default_server;
server_name _;
return 444;
}
设置server_name
为_
表示‘默认’或“全部匹配“。响应代码444
,返回“无响应”,一个特殊的nginx 非标准立即关闭连接。