Jenkins 背后有 SSL,我的案子没有通过

Jenkins 背后有 SSL,我的案子没有通过

在之前的工作中,我曾经使用这些语句将 Jenkins 置于 TLS 反向代理之后。但不知何故,这些语句不再起作用了。(更新:我一直在努力,但我意识到上次这些语句起作用时,我在 CentOS/AmazonLMI 6 上,httpd 版本较低。现在我在 RHEL 7 上)。

我上线了

# rpm -q httpd
httpd-2.4.6-31.el7.x86_64
# rpm -q mod_ssl
mod_ssl-2.4.6-31.el7.x86_64

我参考了这里和 Jenkisn 网站的所有 Jenkins 代理指南,但无济于事。它们似乎都包含我在 conf 文件中已经拥有/知道的内容的变体。

基本上,我安装了 Jenkins,并且可以通过http://其地址:8080; 现在我试图通过 http:its-address 将其设置为反向代理,这样我就可以将其反向代理到https://其地址

我以前不用 a2enmod 也能通过。

这些是我以前在 httpd.conf 和 ssl.conf 上添加的内容。

[httpd.conf]

<VirtualHost *:80>
DocumentRoot /var/www/html
ProxyPass / http://localhost:8080/ nocanon
ProxyPassReverse / http://localhost:8080/
ProxyRequests Off
ProxyPreserveHost On
<Proxy http://localhost:8080/*>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>

[ssl.conf]

SSLProxyEngine On
ProxyPreserveHost on
ProxyPass / https://localhost:8080/
ProxyPassReverse / https://localhost:8080/

无论我如何解决语法问题,我都会遇到

httpd[2410]: AH00526: Syntax error on line 100 of /etc/httpd/conf/httpd.conf:
httpd[2410]: ProxyPass|ProxyPassMatch needs a path when not defined in a location
or
httpd[2401]: Invalid ProxyPass|ProxyPassMatch parameter. Parameter must be in t...lue'.

我所表达的是否正确?

还尝试过,(在 ssl.conf 的末尾)

<VirtualHost *:80>
    ServerAdmin  webmaster@localhost
    Redirect permanent / https://server.com/
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/ca.crt
    ServerAdmin  webmaster@localhost
    ProxyRequests     Off
    ProxyPreserveHost On
    AllowEncodedSlashes NoDecode
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass          http://localhost:8080/
    ProxyPassReverse    http://localhost:8080/
    ProxyPassReverse    http://server.com/
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"
</VirtualHost>

似乎我甚至没有把它放在 80 后面就可以转发到 443。443 当前配置了 CA 签名密钥并且测试页面是安全的。

httpd[4706]: AH00526: Syntax error on line 241 of  /etc/httpd/conf.d/ssl.conf:

httpd[4706]: /etc/httpd/conf.d/ssl.conf:ProxyPass|ProxyPassMatch needs a path when not defined in a location

[/etc/sysconfig/詹金斯]

JENKINS_PORT="8080"
JENKINS_LISTEN_ADDRESS="0.0.0.0"
JENKINS_HTTPS_PORT="8081"
JENKINS_HTTPS_LISTEN_ADDRESS="0.0.0.0"

我在网页上收到“服务不可用。由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后再试”。

非常感谢您的帮助,谢谢。

答案1

花了三天时间才实现

“setsebool -P httpd_can_network_connect 1” 做到了。

相关内容