nginx配置只允许通过域名访问,不允许通过ip访问

本文介绍了如何使用Nginx配置文件来实现不同场景的需求,包括限制IP直接访问、将IP访问重定向到指定域名以及仅允许通过域名或特定内网IP访问等。这些配置对于网站的安全性和用户体验都有重要作用。
http {
	server {
		listen 80;
		server_name www.a.com;

	}
	server {
		listen 80 default_server;
		server_name _;
		return 403;
	}
}

除了用域名能访问,使用ip访问则403

http {
	server {
		listen 80;
		server_name www.a.com;

	}
	server {
		listen 80 default_server;
		server_name _;
		rewrite ^/(.*) http://www.a.com permanent;
	}
}

使用出口ip访问跳转到域名

http {
	server {
		listen 80;
		server_name www.a.com;

	}
	server {
		listen 80 default_server;
		server_name 192.168.1.2;
		
	}
}

出口ip访问403,只能通过域名或者内网ip地址访问

### 配置 Nginx 服务器以支持通过域名访问允许其他设备访问 要确保 Nginx 服务器能够通过域名访问,并且允许其他设备也通过该域名访问,需要完成以下几个关键步骤: #### 配置域名访问 1. **配置 DNS 解析** 确保域名已经正确解析到服务器的公网 IP 地址。可以在域名提供商的 DNS 设置中添加 A 记录,将域名指向服务器的公网 IP。例如,若域名为 `example.com`,则添加 `A` 记录,值为服务器的公网 IP。 2. **配置 Nginx 虚拟主机** 编辑 Nginx 的站点配置文件(通常位于 `/etc/nginx/sites-available/default` 或 `/usr/local/nginx/conf/nginx.conf`),添加一个 `server` 块,指定 `server_name` 为你的域名,并配置 SSL(如果需要 HTTPS 访问)。 ```nginx server { listen 80; server_name example.com www.example.com; location / { root /var/www/html; index index.html; try_files $uri $uri/ =404; } } ``` 如果需要 HTTPS 支持,可以配置 SSL 证书路径: ```nginx server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; location / { root /var/www/html; index index.html; try_files $uri $uri/ =404; } } ``` 3. **禁止 IP 地址直接访问** 为了确保只能通过域名访问,可以添加一个默认的 `server` 块,监听 80 和 443 端口,并返回 403 或 400 错误,以阻止通过 IP 地址访问。 ```nginx server { listen 80 default_server; listen 443 ssl default_server; server_name _; ssl_certificate /etc/nginx/ssl/default.crt; ssl_certificate_key /etc/nginx/ssl/default.key; return 403; } ``` 这样,当用户通过 IP 地址访问时,Nginx 会返回 403 错误[^5]。 #### 允许其他设备访问 1. **确保服务器防火墙开放端口** 确保服务器的防火墙允许 HTTP(80)和 HTTPS(443)端口的入站连接。例如,在 `ufw` 防火墙中,可以使用以下命令: ```bash sudo ufw allow 80/tcp sudo ufw allow 443/tcp ``` 2. **配置服务器监听地址** 确保 Nginx 的 `listen` 指令监听的是 `0.0.0.0`,而是 `127.0.0.1`,以允许外部设备访问。 ```nginx listen 80; ``` 3. **测试域名访问** 在其他设备上,打开浏览器并输入域名(如 `http://example.com`),应能正常访问服务器内容。 4. **配置域名重定向(可选)** 如果希望将裸域名重定向到 `www` 子域名,可以在 Nginx 中添加重定向规则: ```nginx server { listen 80; server_name example.com; return 301 http://www.example.com$request_uri; } ``` 这样,访问 `example.com` 时会自动跳转到 `www.example.com` [^1]。 #### 总结 通过上述配置Nginx 可以确保只能通过域名访问,并且其他设备也可以正常访问。关键在于正确配置 DNS 解析、Nginx 虚拟主机、防火墙规则以及监听地址。此外,还可以通过设置默认 `server` 块来阻止 IP 地址直接访问,从而增强安全性[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值