我有一个正在运行YouTrack使用 Tomcat 7 部署的实例,并且运行良好http://example.com:8080/youtrack
Apache 已配置为支持主域的 SSL(我有 .pem 文件)。https://example.com
和都http://example.com
可以毫无问题地访问。
端口 8443 已被其他服务使用(https://example.com:8443
显示 Plesk 管理面板)。
现在我想设置 YouTrack 以使用https://youtrack.example.com
我怎样才能实现这个目标?
我是否需要配置 Tomcat 以支持 SSL(生成单独的密钥等),或者仅将请求从 Apache 代理到 Tomcat?
我想第一步应该是将 YouTrack 配置为可在 上访问https://example.com:8444/youtrack
,然后使用 Apache 的 代理请求mod_proxy
。
我怎样才能做到这一点?
我的/var/lib/tomcat7/conf/server.conf
是默认的,不做任何改变:http://pastie.org/9385045
我的/usr/share/tomcat7/bin/setenv.sh
包含更改 YouTrack 默认 URL 的条目:
-Djetbrains.youtrack.baseUrl=http://youtrack.example.com
虚拟主机配置:
$ cat /etc/apache2/sites-enabled/default
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/default
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/default>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
SSL 主机:
$ cat /etc/apache2/sites-enabled/default-ssl
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
DocumentRoot /var/www/default
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/default>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/mailserver.pem
SSLCertificateKeyFile /etc/ssl/private/mailserver.pem
#SSLVerifyClient require
#SSLVerifyDepth 10
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
答案1
看起来更好的选择mod_proxy
是mod_jk
。
答案2
您不需要为 tomcat 配置 SSL,只需使用 Apache 将请求代理http://example.com:8080/youtrack
到mod_proxy。
首先为新域名生成/购买证书youtrack.example.com
。然后在您的配置中添加此条目。
<VirtualHost *:443>
ServerName youtrack.example.com
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLCertificateFile /your/ssl/public/path/mailserver.pem
SSLCertificateKeyFile /your/ssl/private/path/mailserver.pem
ProxyPass / http://example.com:8080/youtrack/
ProxyPassReverse / http://example.com:8080/youtrack/
</VirtualHost>