Nginx,Apache只允许域名访问详细配置
一、nginx配置只允许域名访问
# 设置不允许Ip访问web(default_server)
server {
listen 80 default_server;
server_name _;
return 403;
}
# 设置www.meteor-yu.com域名访问web
server {
listen 80;
server_name www.meteor-yu.com;
location /ngx_status {
stub_status on;
access_log off;
}
location /status {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
}
#######
# 设置通过访问顶级域名meteor-yu.com自动跳转到www.meteor-yu.com这个域名
server {
listen 80;
server_name meteor-yu.com;
return 301 http://www.meteor-yu.com$request_uri;
}
二、Apache配置只允许域名访问
# 用Apache搭建的WEB服务器 如何设置只能通过域名访问 禁止使用ip访问的方法
# 目前常用Apache与Nginx来搭建的WEB服务器,通常搭建好之后使用IP也可以访问网站的内容,
# 那对于Apache搭建的WEB服务器如何让网友只能通过设定的域名访问,而不能直接通过服务器的IP地址访问呢?
# 两个方法可以实现,都是修改httpd.conf文件来实现的,下面举例说明。
### 方法一:在httpd.conf文件最后面,加入以下代码
NameVirtualHost *:80
<VirtualHost *:80>
ServerName 192.168.116.129 # web服务地址
<Location />
Order Allow,Deny
Deny from all
</Location>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName www.meteor-yu.com
</VirtualHost>
说明:红色部分是实现拒绝直接通过IP的任何访问请求,这时如果你用IP访问,会提示拒绝访问。蓝色部分就是允许通过www.meteor-yu.com这个域名访问,主目录指向/var/www/html
### 方法二:在httpd.conf文件最后面,加入以下代码
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "/var/www/html/default"
ServerName 192.168.116.129 # web服务地址
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName www.meteor-yu.com
</VirtualHost>
说明:把所有通过IP直接访问的请求指向/var/www/html/default目录下,这可以是个空目录,也可以在里面建一个首页文件,如index.hmtl,首面文件内容可以是一个声明,说明不能通过IP直接访问。
注意:
1. 直接复制粘贴的话可能会带有中文空格,请把这些多余的空格去掉。
2. 如果使用了负载均衡,限制的IP不要写外网IP,请填写内网IP。
###########
# 设置通过访问顶级域名meteor-yu.com自动跳转到www.meteor-yu.com这个域名
# 开启apache rewirte功能
打开httpd.conf,找到
# LoadModule rewrite_module modules/mod_rewrite.so
把#去掉
找到AllowOverride None 改成 AllowOverride All
# 在httpd.conf文件最后面,加入以下代码
<VirtualHost *:80>
ServerName meteor-yu.com
RedirectMatch ^/(.*)$ http://www.meteor-yu.com/$1
</VirtualHost>
PS:以上这只是简易配置,根据需求自行添加相应配置