一、url重写(rewrite)
1. 什么是url重写
url 重写是指将用户请求的 url 转换为另一个 url 的过程。这在很多场景下非常有用,比如:
- 将旧的
url重定向到新的url。 - 美化
url,使其更友好。 - 实现动态
url到静态url的转换。
2. rewrite指令
nginx 提供了 rewrite 指令来实现 url 重写。它的基本语法如下:
rewrite regex replacement [flag];
regex:正则表达式,用于匹配请求的 url。replacement:替换后的url。flag:可选参数,用于控制重写的行为。
3. 示例,url替换
假设我们有一个旧的 url /old-page.html,现在想将其重定向到新的 url /new-page.html,可以在 nginx 配置文件中添加如下配置:
server {
listen 80;
server_name example.com;
location /old-page.html {
rewrite ^/old-page.html$ /new-page.html permanent;
}
}
^/old-page.html$:匹配/old-page.html。/new-page.html:替换为新的url。permanent:返回 301 永久重定向状态码。
4. 示例,美化url
假设我们有一个动态 url /product.php?id=123,现在想将其美化为 /product/123,可以这样配置:
server {
listen 80;
server_name example.com;
location /product {
rewrite ^/product/(\d+)$ /product.php?id=$1 last;
}
}
^/product/(\d+)$:匹配/product/123这样的url,并将 123 捕获为$1。/product.php?id=$1:将捕获的$1作为参数传递给product.php。last:停止处理当前的重写规则,并继续匹配其他location块。
二、ip访问控制
1. 什么是ip访问控制
ip 访问控制是指根据客户端的 ip 地址来限制或允许访问某些资源。这在很多场景下非常有用,比如:
- 限制某些
ip访问敏感资源。 - 允许特定
ip访问管理后台。
2. ip访问控制指令
nginx 提供了 allow 和 deny 指令来实现 ip 访问控制。它们的基本语法如下:
allow ip地址或网段; deny ip地址或网段;
3. 示例:限制特定ip访问
假设我们想限制只有 ip 地址为 192.168.1.100 的客户端可以访问 /admin 目录,其他 ip 地址都拒绝访问,可以这样配置
server {
listen 80;
server_name example.com;
location /admin {
allow 192.168.1.100;
deny all;
}
}
allow 192.168.1.100:允许ip 地址为192.168.1.100的客户端访问。deny all:拒绝所有其他ip 地址的访问。
4. 示例:允许特定网段访问
假设我们想允许 ip 网段为 192.168.1.0/24 的客户端访问 /internal 目录,其他 ip 地址都拒绝访问,可以这样配置:
server {
listen 80;
server_name example.com;
location /internal {
allow 192.168.1.0/24;
deny all;
}
}
allow 192.168.1.0/24:允许ip 网段为192.168.1.0/24的客户端访问。deny all:拒绝所有其他ip 地址的访问。
三、基本认证(basic authentication)
1. 什么是基本认证
基本认证是一种简单的身份验证机制,要求用户提供用户名和密码才能访问受保护的资源。虽然基本认证的安全性不如其他高级认证机制(如 oauth),但在某些场景下仍然非常有用。
2. nginx中的基本认证
nginx 提供了 auth_basic 和 auth_basic_user_file 指令来实现基本认证。它们的基本语法如下:
auth_basic "提示信息"; auth_basic_user_file 密码文件路径;
3. 示例:保护目录
假设我们想保护 /secret 目录,要求用户输入用户名和密码才能访问,可以这样配置:
server {
listen 80;
server_name example.com;
location /secret {
auth_basic "restricted area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
auth_basic "restricted area":设置提示信息为 “restricted area”。auth_basic_user_file /etc/nginx/.htpasswd:指定密码文件路径为/etc/nginx/.htpasswd。
.htpasswd文件创建方式:
nginx 使用 .htpasswd 文件来存储用户名和密码。可以使用 htpasswd 工具来创建和更新这个文件。
htpasswd -c /etc/nginx/.htpasswd username
-c:创建新的密码文件(如果文件已存在,则会覆盖)。/etc/nginx/.htpasswd:密码文件路径。username:用户名。
执行命令后,系统会提示你输入密码。输入密码后,.htpasswd 文件就会生成。
添加多个用户:
如果你想添加多个用户,可以使用 htpasswd 命令的 -b 选项:
htpasswd -b /etc/nginx/.htpasswd user1 password1 htpasswd -b /etc/nginx/.htpasswd user2 password2
-b:直接在命令行中指定密码。
四、总结
你已经掌握了 nginx 中的三个重要功能:url 重写、ip 访问控制和基本认证。这些功能可以帮助你更好地管理和保护你的 web 服务。希望这些示例和解释能帮助你更好地理解和使用 nginx。
以上就是nginx的url重写及ip访问控制详解的详细内容,更多关于nginx url重写及ip访问控制的资料请关注代码网其它相关文章!
发表评论