SkyWalking 从 8.0.0 版本开始弃用了自身的安全验证功能。在此之前,SkyWalking 提供了一种基于 HTTP Basic Auth 的简单认证方式,可以通过用户名和密码来保护 SkyWalking 界面和 API。
要在 Centos 上使用 Nginx 部署 SkyWalking 9.3.0 并设置浏览器端访问时需要输入账户和密码,可以按照以下步骤进行操作:
1. Nginx部署
1.1更新系统软件包
#在安装任何新软件包之前,请确保您的系统上已经更新了所有现有的软件包。
sudo yum update
1.2安装EPEL存储库
#默认情况下,CentOS仓库中不包含Nginx软件包。因此,我们需要安装EPEL(Extra Packages for Enterprise Linux)存储库,它包含了大量的额外的软件包,其中包括Nginx。
sudo yum install epel-release
1.3安装Nginx
#一旦EPEL存储库被启用,您就可以使用yum来安装Nginx了。
yum install nginx
2. 修改 Nginx 配置文件
vim /etc/nginx/nginx.conf。添加以下配置:
server {
listen 80; server_name example.com; # 替换成自己的域名或 IP 地址 location / { proxy_pass http://localhost:18080; # 将请求转发到 SkyWalking 服务器 auth_basic "Restricted"; # 启用基本身份验证,显示提示信息 auth_basic_user_file /etc/nginx/htpasswd; # 指定存储用户名和密码的文件路径 }
}
2.1. 字段解释
- proxy_pass 字段指定将所有请求转发到 SkyWalking 服务器上的端口18080。
- auth_basic 字段指定浏览器显示的提示信息,auth_basic_user_file 字段指定存储用户名和密码的文件路径。
3. 创建存储用户名和密码的文件
3.1 安装htpasswd工具
#运行以下命令来安装httpd-tools包:
yum install httpd-tools
3.2 验证
#安装完成后,您可以运行以下命令来验证是否已成功安装htpasswd工具:
htpasswd –v
#如果hthtpasswd安装成功,将显示htpasswd的版本信息。否则,您可能需要重新启动系统后再次尝试安装。
#创建加密文件
touch /etc/nginx/htpasswd。
#执行以下命令:
htpasswd -c /etc/nginx/htpasswd admin
然后输入密码,即可创建一个具有管理员权限的用户 admin。
4. 验证代理及身份认证
- 检查SELinux状态
首先,请检查SELinux是否已启用:
Getenforce
如果输出为“Enforcing”,则表示SELinux处于启用状态。
- 临时禁用SELinux
要临时禁用SELinux,请运行以下命令:
setenforce 0
#此命令将SELinux设置为“宽松”模式(即不执行强制访问控制),并允许NGINX代理服务器连接到上游服务器。请注意,此操作可能会降低系统安全性,因此应该谨慎使用。
- 永久更改SELinux配置
如果要永久更改SELinux配置,则必须编辑/etc/selinux/config文件,并将其SELINUX值更改为“permissive”或“disabled”。
如果将SELINUX设置为“permissive”,则SELinux仍然处于启用状态,但仅记录警告和错误,而不执行强制访问控制。
如果将SELINUX设置为“disabled”,则完全禁用SELinux。(需重启服务器)
- 重新启动nginx
systemctl restart nginx
#在浏览器中输入在 nginx.conf 中指定的域名或 IP 地址,例如:http://example.com。将会看到一个登录页面,输入之前创建的用户名和密码即可登录。
通过以上步骤,就可以使用 Nginx 部署 SkyWalking 9.3.0 并设置浏览器端访问时需要输入账户和密码进行身份认证。
4. 常见报错及解决方法
使用nginx为skywalking配置账户登陆后浏览器端访问报错,可能是因为 Nginx 无法将请求转发到 SkyWalking 服务器上的端口。
为了解决此问题,您需要检查以下内容:
4.1. 检查监听
端口检查 SkyWalking 服务器是否已正确启动并正在监听正确的端口。可以使用以下命令检查:
netstat -tlnp | grep "8080" # 检查是否有进程在监听端口 8080
4.2. 检查配置文件字段地址
检查 Nginx 配置文件中 proxy_pass 字段是否正确指定了 SkyWalking 服务器的地址和端口。可以尝试直接访问 SkyWalking 服务器的 IP 地址和端口,确认是否可以正常访问。
4.3. 检查防火墙设置
确保允许来自 Nginx 的请求通过。例如,如果使用 firewalld,可以执行以下命令放行端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent # 放行 HTTP 端口
firewall-cmd --reload # 重新加载防火墙规则
4.4. 检查 Nginx 日志
/var/log/nginx/error.log,查看是否有其他错误信息。可以使用以下命令实时监控日志:
tail -f /var/log/nginx/error.log
4.5. 排查代理类型
如果以上步骤都没有解决问题,可以尝试修改 Nginx 配置文件中的代理类型。例如,如果 SkyWalking 服务器使用的是 HTTPS 协议,可以在 location / 中添加以下配置:
proxy_ssl_server_name on;
proxy_pass https://localhost:8443;
其中,proxy_ssl_server_name 表示要将原始请求头中的 Host 头发送到后端服务器,proxy_pass 指定要转发到的 SkyWalking 服务器的地址和端口。
5. 常见502报错
如果在使用NGINX代理到上游服务器时遇到“connect() to [::1]:18080 failed (13: Permission denied) while connecting to upstream”错误消息,这通常是由于SELinux限制引起的。您可以通过禁用或配置SELinux来解决此问题。
5.1. 检查SELinux状态
首先,请检查SELinux是否已启用:
getenforce
如果输出为“Enforcing”,则表示SELinux处于启用状态。
5.2. 临时禁用SELinux
要临时禁用SELinux,请运行以下命令:
setenforce 0
此命令将SELinux设置为“宽松”模式(即不执行强制访问控制),并允许NGINX代理服务器连接到上游服务器。请注意,此操作可能会降低系统安全性,因此应该谨慎使用。
5.3. 永久更改SELinux配置
如果要永久更改SELinux配置,则必须编辑/etc/selinux/config文件,并将其SELINUX值更改为“permissive”或“disabled”。
• 如果将SELINUX设置为“permissive”,则SELinux仍然处于启用状态,但仅记录警告和错误,而不执行强制访问控制。
• 如果将SELINUX设置为“disabled”,则完全禁用SELinux。
请注意,更改此配置可能会影响系统安全性,并使系统容易受到攻击,因此应该谨慎使用。
5.4. 重启服务器
完成SELinux配置更改后,需要重新启动服务器才能使更改生效:
reboot
如果您不想重新启动服务器,则可以使用以下命令暂时停用SELinux:
sudo setenforce 0
这将使SELinux临时处于“宽松”模式。请注意,此操作可能会降低系统安全性。
版权归原作者 派大星的头脑 所有, 如有侵权,请联系我们删除。