Назад | Перейти на главную страницу

Atlassian Crowd + Nginx + SSL не работает - цикл перенаправления

Конфигурация nginx:

server {
        listen          443 ssl;
        server_name     crowd.example.com;
        access_log      off;

        client_max_body_size    10M;

        ssl_certificate         /etc/nginx/ssl/crowd.example.com.crt;
        ssl_certificate_key     /etc/nginx/ssl/crowd.example.com.key;

        location / {
                proxy_pass              http://localhost:8095/;
                proxy_set_header        Host            $host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $remote_addr;
                port_in_redirect        off;
                proxy_redirect          https://crowd.example.com/ /;
        }
}

Соответствующий раздел Crowd из его server.xml:

<Service name="Catalina">

    <Connector
        acceptCount="100"
        connectionTimeout="20000"
        disableUploadTimeout="true"
        enableLookups="false"
        maxHttpHeaderSize="8192"
        maxThreads="150"
        minSpareThreads="25"
        port="8095"
        redirectPort="8443"
        useBodyEncodingForURI="true"
        URIEncoding="UTF-8"

        proxyName="crowd.example.com"
        proxyPort="443"
        scheme="https"
        secure="true"/>

    <Engine defaultHost="localhost" name="Catalina">
        <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"/>
    </Engine>

    <Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
</Service>

Вот моиrow.properties:

session.lastvalidation=session.lastvalidation
session.tokenkey=session.tokenkey
crowd.server.url=http\://localhost\:8095/crowd/services/
application.name=crowd
http.timeout=30000
session.isauthenticated=session.isauthenticated
application.login.url=http\://localhost\:8095/crowd
session.validationinterval=0
application.password=fslLXYfj9DehGTmGjLqZbX

Собирается https://crowd.example.com/crowd привести к циклу перенаправления после входа в систему. Вы можете перейти на страницу входа. (Также, https://crowd.example.com/ тоже работает.) Глядя на это с Firebug в FF, я вижу, что он колеблется между https://crowd.commercialfire.com/crowd/console/login.action и https://crowd.commercialfire.com/crowd/console/defaultstartpage.action.

Предполагая, что nginx находится на том же компьютере, попробуйте эту конфигурацию прокси на nginx:

        location / {

          proxy_set_header X-Forwarded-Host $host;
          proxy_set_header X-Forwarded-Server $host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://127.0.0.1:8095/;
          proxy_redirect off;
          proxy_connect_timeout 300;

    }

И добавить address="127.0.0.1" к определению коннектора в файле server.xml (основной с proxyName)