一、鉴权
为了更好限制访问权限,需要对服务加鉴权,具体步骤如下:
1、安装httpd-tools
yum install -y httpd-tools
2、创建密码文件htpasswd.users
htpasswd -c /etc/nginx/htpasswd.users "账户名"
如果为已存在密码文件添加用户,删除-c
3、配置nginx.conf
nginx 的配置文件中(通常位于 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/default
,具体取决于你的安装和配置),找到或添加你想要保护的 location
块,并添加基本认证的指令。
location / { auth_basic "restricted area"; auth_basic_user_file /etc/nginx/htpasswd.users; ... }
auth_basic "restricted area"
设置了认证提示信息,用户在访问受保护的页面时会看到这个提示。auth_basic_user_file
指令指定了之前创建的包含用户名和加密密码的文件路径。
4、验证修改并加载配置
nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # 如上信息表明修改没有问题
systemctl reload nginx # 重载nginx
二、设置日志
2.1、访问日志access log
访问日志记录了所有客户端请求的信息。你可以通过 access_log 指令来配置访问日志的位置、格式等
http { # 全局访问日志设置 access_log /var/log/nginx/access.log main; # 自定义日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; ... }
2.2、错误日志error log
错误日志记录了 nginx 在处理请求时遇到的错误信息。你可以通过 error_log 指令来配置错误日志的位置和日志级别。
http { # 全局错误日志设置 error_log /var/log/nginx/error.log warn; ... location / { # 为特定位置块设置不同的错误日志 error_log /var/log/nginx/yourapp_error.log info; ... } }
2.3、nginx 日志级别
级别 | 含义 |
---|---|
debug | 最详细的日志级别,记录所有调试信息。 |
info | 记录一般信息,如请求处理详情。 |
notice | 比 info 更重要一些的信息。 |
warn | 警告信息,通常表示可能的问题。 |
error | 错误信息,表示请求处理过程中出现的错误。 |
crit | 关键错误,表示严重的错误。 |
alert | 警报级别,表示需要立即采取行动的情况。 |
emerg | 紧急情况,表示系统无法继续运行。 |
2.4、日志格式配置
nginx 的日志格式非常灵活,可以通过 log_format 指令来自定义日志的输出格式。
默认情况下,nginx 提供了一些预定义的日志格式:
变量 | 含义 |
---|---|
$remote_addr | 客户端的 ip 地址。 |
$remote_user | 客户端的用户名(如果启用了基本认证)。 |
$time_local | 本地时间(标准格式)。 |
$time_iso8601 | iso 8601 格式的时间。 |
$request | 请求行,包括方法、uri 和协议版本。 |
$status | http 状态码。 |
$body_bytes_sent | 发送给客户端的字节数(不包括响应头)。 |
$http_referer | 引用页面的 url。 |
$http_user_agent | 客户端的 user-agent 字符串。 |
$http_x_forwarded_for | 客户端的真实 ip 地址(通过代理服务器传递)。 |
$request_time | 请求处理的总时间(以秒为单位,精度为毫秒)。 |
$upstream_response_time | 从上游服务器接收响应的时间(以秒为单位,精度为毫秒)。 |
$request_length | 请求的长度(包括请求行、头部和请求体)。 |
$bytes_sent | 发送给客户端的字节数(包括响应头)。 |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论