目录
1. Nginx部署
1.1更新系统软件包
1.2安装EPEL存储库
1.3安装Nginx
2. 修改 Nginx 配置文件
2.1. 字段解释
3. 创建存储用户名和密码的文件
3.1 安装htpasswd工具
3.2 验证
4. 验证代理及身份认证
4. 常见报错及解决方法
4.1. 检查监听
4.2. 检查配置文件字段地址
4.3. 检查防火墙设置
4.5. 排查代理类型
5. 常见502报错
5.1. 检查SELinux状态
5.2. 临时禁用SELinux
5.3. 永久更改SELinux配置
5.4. 重启服务器
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 epel-release
#一旦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; # 指定存储用户名和密码的文件路径
}
}
#运行以下命令来安装httpd-tools包:
yum install httpd-tools
#安装完成后,您可以运行以下命令来验证是否已成功安装htpasswd工具:
htpasswd –v
#如果hthtpasswd安装成功,将显示htpasswd的版本信息。否则,您可能需要重新启动系统后再次尝试安装。
#创建加密文件
touch /etc/nginx/htpasswd。
#执行以下命令:
htpasswd -c /etc/nginx/htpasswd admin
然后输入密码,即可创建一个具有管理员权限的用户 admin。
首先,请检查SELinux是否已启用:
Getenforce
如果输出为“Enforcing”,则表示SELinux处于启用状态。
要临时禁用SELinux,请运行以下命令:
setenforce 0
#此命令将SELinux设置为“宽松”模式(即不执行强制访问控制),并允许NGINX代理服务器连接到上游服务器。请注意,此操作可能会降低系统安全性,因此应该谨慎使用。
如果要永久更改SELinux配置,则必须编辑/etc/selinux/config文件,并将其SELINUX值更改为“permissive”或“disabled”。
如果将SELINUX设置为“permissive”,则SELinux仍然处于启用状态,但仅记录警告和错误,而不执行强制访问控制。
如果将SELINUX设置为“disabled”,则完全禁用SELinux。(需重启服务器)
systemctl restart nginx
#在浏览器中输入在 nginx.conf 中指定的域名或 IP 地址,例如:http://example.com。将会看到一个登录页面,输入之前创建的用户名和密码即可登录。
通过以上步骤,就可以使用 Nginx 部署 SkyWalking 9.3.0 并设置浏览器端访问时需要输入账户和密码进行身份认证。
使用nginx为skywalking配置账户登陆后浏览器端访问报错,可能是因为 Nginx 无法将请求转发到 SkyWalking 服务器上的端口。
为了解决此问题,您需要检查以下内容:
端口检查 SkyWalking 服务器是否已正确启动并正在监听正确的端口。可以使用以下命令检查:
netstat -tlnp | grep "8080" # 检查是否有进程在监听端口 8080
检查 Nginx 配置文件中 proxy_pass 字段是否正确指定了 SkyWalking 服务器的地址和端口。可以尝试直接访问 SkyWalking 服务器的 IP 地址和端口,确认是否可以正常访问。
确保允许来自 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
如果以上步骤都没有解决问题,可以尝试修改 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临时处于“宽松”模式。请注意,此操作可能会降低系统安全性。