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

Удалить двойную косую черту в адресе gitlab

Я установил gitlab на своем личном сервере и использовал этот ответ и этот ответ (вместе с некоторыми данными от этот чтобы он работал с моей установкой apache. Все работает нормально, когда я захожу на gitlab.example.com, я вижу пользовательский интерфейс gitlab, могу создавать учетные записи и так далее. Однако, когда я проверил URI, на который меня перенаправили, он

https://gitlab.example.com//users/sign_in (обратите внимание на две косые черты после домена). На самом деле это не проблема, но я хотел бы знать, почему это так и как я могу это исправить - тем более, что это работает так же хорошо, когда я удаляю одну из косых черт из адреса. (Так https://gitlab.example.com/users/sign_in точно так же).

Фактически, меня дважды перенаправляют:

Это мой конфигурационный файл apache (/etc/apache2/sites-enabled/gitlab.conf):

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName gitlab.example.com
        ServerSignature Off

        ProxyPreserveHost On

        ProxyPassMatch ^(/[^/]+\.(html|png|ico|css|txt))$ !
        ProxyPass /assets !

        <Location />
                Order deny,allow
                Allow from all

                ProxyPassReverse http://127.0.0.1:8080
                ProxyPassReverse http://gitlab.example.com
        </Location>

        RewriteEngine on
        RewriteCond %{DOCUMENT_ROOT}/%(REQUEST_FILENAME} !-f
        RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA]

        DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public

        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Это проблема с gitlab? Как я могу это обойти?

Примечание: Я абсолютно не уверен, какой модуль вызывает поведение пересылки, если вам нужны другие файлы конфигурации, просто дайте мне знать.

Вы можете попробовать добавить косую черту в конце / к ProxyPass целевой URL, т.е. изменить

 ProxyPassReverse http://127.0.0.1:8080

в

 ProxyPassReverse http://127.0.0.1:8080/

поскольку вы применяете эти директивы к пути, который также заканчивается косой чертой / (или только косую черту в этом случае: <Location />) как предупреждает руководство:

Если первый аргумент заканчивается замыкающим /, второй аргумент также должен заканчиваться замыкающим /, и наоборот. В противном случае результирующие запросы к бэкэнду могут пропустить некоторые необходимые косые черты и не доставить ожидаемых результатов.