AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-404882

olivierg's questions

Martin Hope
olivierg
Asked: 2025-02-07 22:04:53 +0800 CST

Apache 反向代理:打印后端返回的错误,而不仅仅是“错误 500”

  • 6

我有一个 apache 服务器充当 web 服务的反向代理,其配置如下:

<VirtualHost *:18010>

 SSLEngine on
 ProxyRequests off
 SSLProxyEngine on
 ProxyPass / https://backend.url:4445/
 ProxyPassReverse / https://backend.url:4445/
 SSLVerifyClient require
 SSLVerifyDepth 10
 SSLCACertificateFile ssl/cacerts.pem

</VirtualHost>

运行良好。但是,当“客户端”针对 URL 后面运行的 WebService 运行查询时,如果后端响应错误,则代理仅显示存在错误 500,例如:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator at
 [email protected] to inform them of the time this error occurred,
 and the actions you performed just before this error.</p>
<p>More information about this error may be available
in the server error log.</p>
</body></html>

而当“直接”(不通过代理)查询WebService时,我们可以看到服务器返回的“真实”错误,例如:

Error 500: javax.servlet.ServletException: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field &quot;test&quot; &#40;Class iseries.wsbeans.avews10.PrecheckInput&#41;, not marked
 at [Source: com.ibm.ws.webcontainer.srt.SRTInputStream@6bd1f156&#59; line: 1, column: 11] &#40;through reference chain: iseries.wsbeans.avews10.PrecheckPaymentInput[&quot;test&quot;]&#41;

所以我的问题是:是否有一个选项可以添加 apache 配置,以便它返回后端返回的完整错误,而不仅仅是错误 500?

再次感谢问候,

apache-2.4
  • 1 个回答
  • 64 Views
Martin Hope
olivierg
Asked: 2021-08-26 00:54:48 +0800 CST

在命令行上使用 sendmail 进行身份验证的 SMTP

  • 0

我们在命令行上使用 sendmail 发送电子邮件,命令如下:

cat <email_contents> | sendmail -t

<email_contents> 包含发件人、收件人等字段:

To: [email protected]
Subject: Testing
From: [email protected]

以及一个巨大的文件,附件等。

我们现在需要使用经过身份验证的 SMTP(传递登录名和密码参数以针对 SMTP 服务器进行身份验证)。

有没有办法用这种方法做到这一点?(使用 sendmail 参数或修改 email_contents 考虑以下元素:

  1. 不使用 mailx 或任何其他邮件客户端。我们需要继续从命令行使用 sendmail
  2. 不修改 sendmail 配置文件 (sendmail.cf)

再次感谢问候,

linux email solaris smtp sendmail
  • 1 个回答
  • 1959 Views
Martin Hope
olivierg
Asked: 2020-02-27 05:24:54 +0800 CST

HAProxy 在 syslog 中记录 TCP 流量

  • 1

我正在尝试配置我的 HAProxy 以记录更多信息,而不仅仅是说“代理后端_xx 已启动”,看起来我无法理解它是如何工作的。

我的 HAProxy 是一个纯 TCP LB(只是将请求从前端转发到后端,纯 L4)。

我想在这里的 HAProxy 文档中提到日志https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#8.2.2

这是我目前的配置和问题,在“全局/默认部分”中,我有:

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    daemon
    user                haproxy
    group               haproxy
    log                 /dev/log local6 debug
    maxconn             50000
    chroot              /var/lib/haproxy
    pidfile             /var/run/haproxy.pid

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                 tcp
    option               tcplog
    log                  global
    option               dontlognull
    timeout connect      5000
    timeout client       50000
    timeout server       50000

我的前端下也有这个选项:

frontend main_https_listen
    bind xxxxxxxxxxxxxx:443
    mode                tcp
    option              tcplog
    xxxxxxx

我在我的 rsyslog.d 中配置了一个文件:

[root@xxxxxxx ~]# cat /etc/rsyslog.d/haproxy.conf
# -----------------------------------------------
# Haproxy specific logging configuration
# -----------------------------------------------
local6.debug             /var/log/haproxy-traffic.log
local6.notice            /var/log/haproxy-admin.log
[root@xxxxxxx ~]#

不幸的是,这两个文件都包含相同的信息,例如:

[root@xxxxxxx ~]# tail -11 /var/log/haproxy-admin.log
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy stats started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy main_https_listen started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_SIT_AT35073 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_SIT_AT34305 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_SIT_AT28548 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_SIT_AT28756 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_SIT_AT36702 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_UAT_AT28546 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_PRD_AT28547 started.

[root@xxxxxxx ~]# tail -11 /var/log/haproxy-traffic.log
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy stats started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy main_https_listen started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_SIT_AT35073 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_SIT_AT34305 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_SIT_AT28548 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_SIT_AT28756 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_SIT_AT36702 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_UAT_AT28546 started.
Feb 25 18:05:30 xxxxxxx haproxy[838761]: Proxy backend_PRD_AT28547 started.

虽然我希望流量日志能够生成文档中的内容,例如:

Feb  6 12:12:56 localhost \
  haproxy[14387]: 10.0.1.2:33313 [06/Feb/2009:12:12:51.443] fnt \
  bck/srv1 0/0/5007 212 -- 0/0/0/0/3 0/0

对我的配置有什么问题有任何想法吗?

再次感谢

问候

syslog haproxy
  • 1 个回答
  • 4748 Views
Martin Hope
olivierg
Asked: 2019-11-10 12:21:36 +0800 CST

绑定和动态更新

  • 0

我的 BIND 服务器中有一些区域经常由一些 Windows DHCP 服务器动态更新。但是,我需要在这些区域中“手动”添加记录。我是否仍然可以通过简单地编辑这些区域来手动更新这些区域(在我的绑定服务器上使用 vi,就像我对不支持更新的其他区域所做的那样)、添加记录、更新序列并重新加载东西?(rndc 重新加载)如果在我的串行更新期间,任何动态系统(在我的情况下为 DHCP)同时完成更新,会发生什么情况。谢谢

domain-name-system
  • 1 个回答
  • 817 Views
Martin Hope
olivierg
Asked: 2019-10-16 02:06:38 +0800 CST

HAProxy 作为 TCP 负载平衡器(SSL 直通)不起作用?

  • 2

我在将 HAProxy 设置为 TCP 负载平衡器(第 4 层)时遇到了一些问题,我想听听您的建议。

我一直在关注网络上的许多指南,我想出了这个配置(在日志中没有显示任何错误,它开始很好):

注意:真实域名被屏蔽

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
 daemon
 user                haproxy
 group               haproxy
 log                 /dev/log local6 debug
 maxconn             50000
 chroot              /var/lib/haproxy
 pidfile             /var/run/haproxy.pid

#---------------------------------------------------------------------
# common defaults 
#---------------------------------------------------------------------
defaults
 mode                 tcp
 log                  global
 option               dontlognull
 timeout connect      5000
 timeout client       50000
 timeout server       50000

#---------------------------------------------------------------------
# dedicated stats page
#---------------------------------------------------------------------
listen stats
 mode http
 bind :22222
 stats enable
 stats uri            /haproxy?stats
 stats realm          Haproxy\ Statistics
 stats auth           xxxxxx:xxxxxxxx
 stats refresh        30s

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main_https_listen
 bind *:443
 mode                tcp
 option              tcplog

# -------------------------------
# ACLs - SIT
# -------------------------------

acl acl_SIT_CI5      req.ssl_sni -i url1.domain.net
acl acl_SIT_HR8      req.ssl_sni -i url2.domain.net

# -------------------------------
# Conditions - SIT
# -------------------------------

use_backend backend_SIT_CI5 if acl_SIT_CI5
use_backend backend_SIT_HR8 if acl_SIT_HR8

#---------------------------------------------------------------------
# Backends
#---------------------------------------------------------------------

backend backend_SIT_CI5
 mode tcp
 balance source
 option ssl-hello-chk
 server server_SIT_CI5_1 host1.domain.net:443 check
 server server_SIT_CI5_2 host2.domain.net:443 check

backend backend_SIT_HR8
 mode tcp
 balance source
 option ssl-hello-chk
 server server_SIT_HR8_1 host1.domain.net:443 check
 server server_SIT_HR8_2 host2.domain.net:443 check

我已将 host1.domain.net 指向我的 haproxy vIP(它后面有一个带有虚拟 IP 的 keepalived 配置)。

现在当访问https://url1.domain.net(甚至是https://loadbalancerURL但我认为这是正常的)我有一个错误这个页面无法显示。在高级设置中打开 TLS 1.0、TLS 1.1 和 TLS 1.2 并尝试再次连接到https://host1.domain.net。

单个 openssl s_client会导致 ssl 握手失败(无证书 blabla)。

你知道我做错了什么吗?另外,我在收听 443 时是否需要设置一些证书?(即使我不希望这些证书被解密或者我只希望我的 HAProxy 充当代理)。

我也尝试激活调试模式进行日志记录,但它没有显示任何错误(也没有新日志)

注意:后端位于防火墙后面,后端与 HAProxy 之间的通信未在 443 上打开(仅从 Haproxy 到后端),是否需要定向?为什么?

注意2:在haproxy stats中,我可以看到所有后端UP

另外,有没有办法知道/检查基于主机名(SNI)的重定向是否工作正常?(我的印象是连接停留在负载均衡器上并且没有重定向到后端,这就是我出错的原因)

haproxy -vv给出:

HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <[email protected]>

Build options :
  TARGET  = linux2628
  CPU     = generic
  CC      = gcc
  CFLAGS  = -O2 -g -fno-strict-aliasing -DTCP_USER_TIMEOUT=18
  OPTIONS = USE_LINUX_TPROXY=1 USE_GETADDRINFO=1 USE_ZLIB=1 USE_REGPARM=1     USE_OPENSSL=1 USE_PCRE=1

Default settings :
  maxconn = 2000, bufsize = 16384, maxrewrite = 8192, maxpollevents = 200

Encrypted password support via crypt(3): yes
Built with zlib version : 1.2.7
Compression algorithms supported : identity, deflate, gzip
Built with OpenSSL version : OpenSSL 1.0.2k-fips  26 Jan 2017
Running on OpenSSL version : OpenSSL 1.0.2k-fips  26 Jan 2017
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports prefer-server-ciphers : yes
Built with PCRE version : 8.32 2012-11-30
PCRE library supports JIT : no (USE_PCRE_JIT not set)
Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT     IP_FREEBIND

Available polling systems :
      epoll : pref=300,  test result OK
       poll : pref=200,  test result OK
     select : pref=150,  test result OK
Total: 3 (3 usable), will use epoll.
ssl
  • 2 个回答
  • 9630 Views
Martin Hope
olivierg
Asked: 2017-03-17 07:15:58 +0800 CST

回收 HP 3Par SAN 和 VMware ESXi 中的空间

  • 2

我刚刚使用 ESX 端的命令回收了 HP 3Par 中未使用的空间,例如:

esxcli storage vmfs unmap --l DATASTORENAME

它运行良好,从 3Par 控制台,我现在可以在我的数据存储/LUN 上看到:

  • 已用用户空间:26%(回收前为 46%)
  • 预留用户空间:4.7Tb/10Tb(遗憾的是没有改变)

但是,在 VMware 中,空间并没有改变。我想这是由于这种“保留”(空间保留在 3Par 上)。

有没有办法通过运行某种调整命令或紧凑命令来删除 SAN 上的这种分配(我想数据是零)?

我看到它们是诸如compactcpg之类的命令,但它似乎并不是我所需要的,因为我认为它不会正确平衡磁盘之间的数据(块)?(但使用的磁盘尽可能少,因此会降低性能?)

感谢和问候,

disk-space-utilization storage-area-network hp vmware-esx
  • 2 个回答
  • 7639 Views
Martin Hope
olivierg
Asked: 2017-03-11 14:27:00 +0800 CST

无法过滤 syslog-ng 中格式错误的消息

  • 0

我正在就 syslog-NG 的问题与您联系。我们的一些设备(主要是 HP 交换机和 SAN)正在发送似乎不遵守 syslog RFC 5424 的 syslog 消息。

举几个例子:

如果我嗅探服务器的网络接口,我们可以看到这些“错误”消息(如您​​所见,在 PRI 之后,我们可以看到 PROGRAM,然后是时区和用逗号分隔的字段。简而言之,混合字段,缺少字段等不是标准的系统日志消息):

<190>raslogd: 2017/03/08-16:03:20, [SEC-1203], 53642, WWN 10:00:50:eb:1a:6c:21:38 | FID 128, INFO, cswc-mo8x-SAN01, Login information: Login successful via TELNET/SSH/RSH. IP Addr: 1.2.3.4

因此,我目前无法过滤这些消息。我尝试定义一个常规过滤器并尝试打印 MSGHDR、MSG、PRI 等字段,但什么也看不到。

过滤此消息的唯一方法是仅定义外部接口和一个文件作为输出,而无需任何模板。

例如,如果我做这样的过滤器:

destination d_INCOMING_ALL   { file("/app/syslog-ng/logs/incoming_all.log"); };

log {
  source(s_EXTERNAL);
  destination(d_INCOMING_ALL);
};

我可以在日志文件中看到消息,但以某种方式格式化(我想 syslog-NG 重新格式化它们):

[root@xxxxxxxxxxxx logs]# grep -i cswc incoming_all.log
Mar  9 09:44:20 cswc-mo8x-hpsan01 raslogd: 2017/03/09-08:34:50, [SEC-1203], 53647, WWN 10:00:50:eb:1a:6c:21:38 | FID 128, INFO, cswc-mo8x-SAN01, Login information: Login successful via TELNET/SSH/RSH. IP Addr: 1.2.3.4
[root@xm1p1034vmo logs]#

问题是我无法像那样过滤这些消息(我们收到来自 1000 多个设备的日志),我需要过滤来自这些设备的消息!我能做到的唯一方法是使用主机名(cswc- )或程序名(raslogd)

所以我尝试通过向该文件添加模板来显示字段,例如:

destination d_test { 
    file ("/app/syslog-ng/logs/test_olivier.log" 
    template("pri=${priority} date=${ISODATE} host=${HOST} program=${PROGRAM} message=${MSG}\n") 
    ); 
};

但没有任何效果,没有显示任何内容。我尝试了所有字段,MSG、MESSAGE、MSGHDR 等。无法管理显示任何内容。唯一有效的是没有过滤器或模板的解析。

自然,如果我尝试了所有类型的过滤器,如下面的这些,它就不起作用(因为字段是混合的):

filter f_is_SAN     {
    host("cswc.*" flags(ignore-case));
};

相同的:

filter f_is_SAN     {
    match(".*cswc.*" flags(ignore-case));
};

关于如何为来自这些设备(主机名或程序名)的这些消息创建过滤器的任何提示?

感谢和问候,

syslog syslog-ng filter
  • 2 个回答
  • 1264 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve