0


启用skywalking身份安全认证

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. 字段解释

  1. proxy_pass 字段指定将所有请求转发到 SkyWalking 服务器上的端口18080。
  2. 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. 验证代理及身份认证

  1. 检查SELinux状态

首先,请检查SELinux是否已启用:

Getenforce

如果输出为“Enforcing”,则表示SELinux处于启用状态。

  1. 临时禁用SELinux

要临时禁用SELinux,请运行以下命令:

setenforce 0

#此命令将SELinux设置为“宽松”模式(即不执行强制访问控制),并允许NGINX代理服务器连接到上游服务器。请注意,此操作可能会降低系统安全性,因此应该谨慎使用。

  1. 永久更改SELinux配置

如果要永久更改SELinux配置,则必须编辑/etc/selinux/config文件,并将其SELINUX值更改为“permissive”或“disabled”。

如果将SELINUX设置为“permissive”,则SELinux仍然处于启用状态,但仅记录警告和错误,而不执行强制访问控制。

如果将SELINUX设置为“disabled”,则完全禁用SELinux。(需重启服务器)

  1. 重新启动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临时处于“宽松”模式。请注意,此操作可能会降低系统安全性。

标签: nginx 运维 服务器

本文转载自: https://blog.csdn.net/qq_52497256/article/details/130411850
版权归原作者 派大星的头脑 所有, 如有侵权,请联系我们删除。

“启用skywalking身份安全认证”的评论:

还没有评论