nginx的虚拟主机、https、重定向以及访问控制

本文介绍了如何配置nginx实现虚拟主机、启用HTTPS、设置重定向以及进行访问控制。首先,讲解了在物理机中设置nginx虚拟主机的步骤,并通过浏览器进行测试。接着,讨论了如何配置https以确保安全连接。然后,探讨了使用正则表达式进行重定向的技巧,包括直接重定向到首页和特定页面加密。此外,还提到了反向重定向的应用。最后,讲述了nginx的访问控制策略,强调了配置文件的顺序对权限控制的重要性,以及重启nginx服务的必要性。

1.nginx的虚拟主机

在物理机中写入解析

vim /etc/hosts

在server1中:

[root@server1 ~]# vim /usr/local/lnmp/nginx/conf/nginx.conf

[root@server1 ~]# nginx -s reload
[root@server1 ~]# mkdir /www1
[root@server1 ~]# mkdir /www2
[root@server1 ~]# cd /www1
[root@server1 www1]# vim index.html


 

[root@server1 www1]# cd /www2
[root@server1 www2]# vim index.html

在物理机浏览器测试:

2.https

[root@server1 www2]# vim /usr/local/lnmp/nginx/conf/nginx.conf

[root@server1 www2]# cd /etc/pki/tls/certs/
[root@server1 certs]# ls

[root@server1 certs]# make cert.pem

[root@server1 certs]# cp cert.pem /usr/local/lnmp/nginx/conf/
[root@server1 certs]# nginx -s reload

在物理机中测试:

3.nginx的重定向

[root@server1 ~]# vim /usr/local/lnmp/nginx/conf/nginx.conf

$1表示可扩展,例去掉$1,有如下测试时候直接重定向到首页

加上$1时,只是给所要访问的页面加密

当访问westos.org时会自动转到www.westos.org下

反向重定向

[root@server1 ~]# vim  /usr/local/lnmp/nginx/conf/nginx.conf  

测试:

4.nginx的访问控制

location / {
deny all;         //禁止访问所有;
allow 172.25.129.0/24  //允许该网段用户访问
}

ps:重写配置文件后应重启nginx服务; 配置文件从上往下读,以此为例:deny了所有的用户后再允许这一网段用户则这一网段用户可以访问,但如果将deny all放在allow之下,那么所有用户将不能访问。

### 解决Nginx配置引起的网页无限重定向问题 当遇到由Nginx配置引发的网页无限重定向问题时,通常是因为重定向逻辑设计不当造成的。具体来说,在某些情况下,`rewrite`指令或`return`语句可能会导致请求被不断重新发送到同一位置,形成循环。 对于这种情况,有几种方法可以用来排查并解决问题: #### 1. 检查是否存在重复的条件判断 如果在同一上下文中多次应用相同的重定向规则,则可能导致不必要的额外跳转。例如,在HTTP向HTTPS转换的过程中,应该只在一个地方执行此操作,而不是在多个虚拟主机定义内分别处理[^4]。 #### 2. 使用适当的状态码 确保选择了合适类型的重定向状态码——临时(`302`)还是永久(`301`)。错误的选择可能会影响浏览器缓存行为以及搜索引擎索引方式。特别是当使用`permanent`(即`301`)时要格外小心,因为它会被客户端长期记住[^1]。 #### 3. 避免无终止条件的递归调用 当使用像`last`这样的标志来指示完成内部重写过程时,务必确认已经提供了清晰明确的退出路径;否则,这将引起最多十次迭代后的服务器错误响应(500 Internal Server Error)[^3]。 #### 4. 审核正则表达式的准确性 仔细审查用于匹配URL模式的任何正则表达式,以防止它们意外捕获不应当参与特定重定向前缀的所有流量。比如上面的例子中使用的通用通配符`.`*.*`可能会过于宽泛[^2]。 为了更好地理解上述建议的应用场景,请参阅下面给出的一个改进版配置片段作为示范: ```nginx server { listen 80; server_name example.com; # 将所有http请求转向https版本 if ($scheme != "https") { return 301 https://$host$request_uri; } location /old-path/ { # 对于旧链接做一次性的永久重定向至新地址 rewrite ^/old-path/(.*)$ /new-location/$1 permanent; } } ``` 通过以上措施,应能有效减少乃至消除因不当配置而产生的无限重定向现象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值