12.08.2011

show processlist не все показывает?

5 минута 50-я секунда конференции с Петром Зайцевым.

09.08.2011

Форвард с HTTP на HTTPS в Nexus (Jetty) и Tomcat

Чтобы все было по фэн-шую, корпоративные ресурсы нужно делать только по HTTPS, так как там везде аутентификацию и, соответственно, передаются данные, которые можно легко перехватить.
В случае, если Вы используете Apache или Nginx, то все тривиально, но если ресурс на Jetty/Tomcat, как например TeamCity или Nexus, то придется немножко помучаться.

Jetty.
Итак начнем с Jetty (рассматривается на примере Nexus):
Первое, что требуется - научить его работать одновременно и с HTTP и с HTTPS. Для этого в файл свойств jetty добавим еще один порт:
vim /opt/nexus/conf/plexus.properties


application-port=80
application-port-ssl=443
...

Далее в конфигурационном файле Jetty, создадим еще один коннектор.

Был только один коннектор:
    <Call name="addConnector">
        <Arg>
            <New class="org.mortbay.jetty.nio.SelectChannelConnector">
              <Set name="host">${application-host}</Set>
              <Set name="port">${application-port}</Set>
            </New>
        </Arg>
    </Call>

А мы сделаем два одновременно (второй пообширнее, так как там сертификат описывается):

        <Call name="addConnector">
        <Arg>
            <New class="org.mortbay.jetty.nio.SelectChannelConnector">
              <Set name="host">${application-host}</Set>
              <Set name="port">${application-port}</Set>
            </New>
        </Arg>
    </Call>

    <Call name="addConnector">
        <Arg>
            <New class="org.mortbay.jetty.security.SslSelectChannelConnector">
              <Set name="host">${application-host}</Set>
              <Set name="port">${application-port-ssl}</Set>
              <Set name="keystore">/etc/ssl/keystore</Set>
              <Set name="keyPassword">Meik8hahTi5ooXoong3aiv1maiteed</Set>
              <Set name="truststore">/etc/ssl/keystore</Set>
              <Set name="password">Meik8hahTi5ooXoong3aiv1maiteed</Set>
              <Set name="trustPassword">Meik8hahTi5ooXoong3aiv1maiteed</Set>
            </New>
        </Arg>
    </Call>
Теперь заменяем объявление существующего handler/context-collection на отдельный context-collection. А именно просто убираем обрамляющий тег .