本文介绍: SkyWalking从 8.0.0 版本开始弃用了自身的安全验证功能。在此之前,SkyWalking 提供了一种基于 HTTP Basic Auth简单认证方式可以通过用户名密码保护 SkyWalking 界面和 API。

目录

1.  Nginx部署

1.1更新系统软件包

1.2安装EPEL存储库

1.3安装Nginx


SkyWalking 从 8.0.0 版本开始弃用了自身的安全验证功能。在此之前,SkyWalking 提供了一种基于 HTTP Basic Auth简单认证方式可以通过用户名密码保护 SkyWalking 界面和 API。

要在 Centos使用 Nginx 部署 SkyWalking 9.3.0 并设置浏览器访问需要输入账户和密码,可以按照以下步骤进行操作

#在安装任何新软件包之前,请确保您的系统上已经更新了所有现有的软件包。

sudo yum update

#默认情况下,CentOS仓库中不包含Nginx软件包。因此,我们需要安装EPEL(Extra Packages for Enterprise Linux)存储库,它包含了大量的额外的软件包,其中包括Nginx。

sudo yum install epelrelease

#一旦EPEL存储库被启用,您就可以使用yum安装Nginx了。

yum install 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; # 指定存储用户名和密码的文件路径

    }

}

  1. proxy_pass 字段指定将所有请求转发到 SkyWalking 服务器上的端口18080。
  2. auth_basic 字段指定浏览器显示的提示信息,auth_basic_user_file 字段指定存储用户名和密码的文件路径

#运行以下命令安装httpdtools包:

yum install httpdtools

#安装完成后,您可以运行以下命令来验证是否已成功安装htpasswd工具:

htpasswdv

#如果hthtpasswd安装成功,将显示htpasswd版本信息。否则,您可能需要重新启动系统后再次尝试安装。

#创建加密文件

touch /etc/nginx/htpasswd

#执行以下命令

htpasswdc /etc/nginx/htpasswd admin

然后输入密码,即可创建一个具有管理员权限的用户 admin。

  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 并设置浏览器访问需要输入账户和密码进行身份认证

 

 

 

使用nginxskywalking配置账户登陆后浏览器访问报错,可能是因为 Nginx 无法将请求转发到 SkyWalking 服务器上的端口

为了解决问题,您需要检查以下内容

端口检查 SkyWalking 服务器是否已正确启动并正在监听正确端口可以使用以下命令检查

netstat -tlnp | grep “8080” # 检查是否有进程监听端口 8080

检查 Nginx 配置文件proxy_pass 字段是否正确指定了 SkyWalking 服务器的地址端口可以尝试直接访问 SkyWalking 服务器的 IP 地址和端口,确认是否可以正常访问

确保允许来自 Nginx 的请求通过。例如,如果使用 firewalld,可以执行以下命令放行端口:

firewallcmd –zone=publicadd-port=80/tcp –permanent # 放行 HTTP 端口

firewallcmdreload # 重新加载防火墙规则

4.4.   检查 Nginx 日志

 /var/log/nginx/error.log查看是否有其他错误信息。可以使用以下命令实时监控日志:

tail -f /var/log/nginx/error.log

如果以上步骤都没有解决问题,可以尝试修改 Nginx 配置文件中的代理类型。例如,如果 SkyWalking 服务器使用的是 HTTPS 协议,可以在 location / 中添加以下配置

proxy_ssl_server_name on;

proxy_pass https://localhost:8443;

其中,proxy_ssl_server_name 表示要将原始请求头中的 Host 头发送到后端服务器,proxy_pass 指定转发到的 SkyWalking 服务器的地址和端口。

如果在使用NGINX代理到上游服务器时遇到“connect() to [::1]:18080 failed (13: Permission denied) while connecting to upstream错误消息,这通常是由于SELinux限制引起的。您可以通过禁用或配置SELinux来解决问题

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

getenforce

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

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

setenforce 0

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

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

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

•     如果将SELINUX设置为“disabled”,则完全禁用SELinux。

请注意,更改配置可能会影响系统安全性,并使系统容易受到攻击,因此应该谨慎使用。

完成SELinux配置更改后,需要重新启动服务器才能使更改生效

reboot

如果您不想重新启动服务器,则可以使用以下命令暂时停用SELinux:

sudo setenforce 0

这将使SELinux临时处于“宽松”模式。请注意,此操作可能会降低系统安全性。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注