Apache2 ProxyPass per Rails App Gitlab

Sto tentando di configurare un proxy con Apache2 in modo che le richieste in arrivo a http://myipaddress.com vadano a http://localhost:3000/ dove ho Gitlab (un’applicazione di rails) in esecuzione. Quello che segue è quello che ho nel mio file di configurazione Apache su Ubuntu 10.04. Posso accedere con successo alla pagina predefinita di gitlab inizialmente, ma tutte le richieste successive eseguite da me facendo clic su altre pagine dopo di ciò passano a una pagina 404 NOT FOUND. Posso inserire manualmente / gitlab / di fronte a uno di questi reindirizzamenti falliti e funzionano bene. Come posso fare questo lavoro senza dover riscrivere / gitlab / dopo ogni richiesta di reindirizzamento dopo la richiesta iniziale?

 ## Setup a proxy which listens on the port that gitlabh does ( from start_server.sh ) ProxyRequests Off ProxyPass /gitlab/ http://localhost:3000/ ProxyPassReverse /gitlab/ http://localhost:3000/ #DocumentRoot /home/gitlabhq/gitlabhq/public  Order deny,allow Allow from all  

Capisco che potrei avere il codice qui sotto, che potrebbe risolvere il mio problema. Ma non so come modificare il prefisso del servizio gitlab rails. Gradirei davvero un aiuto!

 ProxyPass /gitlab/ http://localhost:3000/gitlab/ ProxyPassReverse /gitlab/ http://localhost:3000/gitlab/ 

AGGIORNARE:

Grazie al commento di Friek sono arrivato molto vicino a risolvere questo. Di seguito è parte del mio file http.conf. L’unico problema è quando premo il pulsante home o il logo sull’app gitlab che tenta di redirect a gitlab / che mi dà il file index.html di base da Apache2 che dice “Funziona!”. Come posso configurare questo per permettermi di ottenere semplicemente / gitlab e mi porta alla vista home root di gitlab ?? Grazie!

 ## For Gitlab using Apache2 Passenger ## Install on Ubuntu by: ## sudo gem install passenger && sudo passenger-install-apache2-module ## but only after running the install_and_configure_git.py script ## and creating a soft link to the rails gitlab /public directory like so: ## sudo ln -s /home/gitlabhq/gitlabhq/public /var/www/gitlab LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13 PassengerRuby /usr/local/bin/ruby  ServerName gitlab ## Set the overall Document Root DocumentRoot /var/www  Allow from all  ## Set the Rails Base URI RackBaseURI /gitlab RailsBaseURI /gitlab  Allow from all Options -MultiViews   

Mi sono imbattuto in questo succo che ha funzionato per me. Nel caso in cui dovesse mai morire, lo ripubblicherò.


file di configurazione unicorno

Modifica il file /home/gitlab/gitlab/config/unicorn.rb

Trova la linea ascolta "#{app_dir}/tmp/sockets/gitlab.socket" e commentala. Linea di commento vocale "127.0.0.1:8080"

moduli richiesti per apache

  • sudo a2enmod proxy
  • sudo a2enmod proxy_balancer
  • sudo a2enmod proxy_http
  • sudo a2enmod rewrite

/home/gitlab/gitlab/config/gitlab.conf

  ServerName git.domain.com # Point this to your public folder of teambox DocumentRoot /home/gitlab/gitlab RewriteEngine On  BalancerMember http://127.0.0.1:8080  # Redirect all non-static requests to thin RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://unicornservers%{REQUEST_URI} [P,QSA,L] ProxyPass / balancer://unicornservers/ ProxyPassReverse / balancer://unicornservers/ ProxyPreserveHost on  Order deny,allow Allow from all  # Custom log file locations ErrorLog /var/log/apache2/gitlab_error.log CustomLog /var/log/apache2/gitlab_access.log combined  
  ServerName gitlab ## Set the overall Document Root DocumentRoot /var/www  Allow from all  ## Set the Rails Base URI RackBaseURI /gitlab RailsBaseURI /gitlab  Allow from all Options -MultiViews   

Queste impostazioni nel tuo httpd.conf o nel tuo file di configurazione dei siti devono essere eseguite. Rimuovi le impostazioni del proxy inverso se ne hai e prova, funzionerà.

se hai sotto le righe insieme alla precedente configurazione, rimuovi le linee sottostanti,

 ProxyPass /gitlab/ http://localhost:3000/gitlab/ ProxyPassReverse /gitlab/ http://localhost:3000/gitlab/ Proxy on 

Riavvia il tuo webserver

 service apache2 restart 

Questo è nel caso in cui qualcuno di nuovo si imbatta in questo problema.

Questo mi ha aiutato, nota le linee ProxyPassReverse . Il mio problema completo e la risoluzione è su https://stackoverflow.com/a/22390543/3112527 .

   Servername gitlab.my_domain.com ServerAdmin [email protected]_domain.com SSLCertificateFile /etc/apache2/ssl.crt/gitlab_my_domain.crt SSLCertificateKeyFile /etc/apache2/ssl.crt/gitlab_my_domain_private.key SSLCACertificateFile /etc/apache2/ssl.crt/gitlab.ca-bundle ##### All the other Apache SSL setup skipped here for StackOverflow #### ProxyPreserveHost On  # New authorization commands for apache 2.4 and up # http://httpd.apache.org/docs/2.4/upgrading.html#access Require all granted # For relative URL root "host:your_gitlab_port/relative_root" #ProxyPassReverse http://127.0.0.1:8085/gitlab #ProxyPassReverse https://gitlab.my_domain.com/gitlab # For non-relative URL root ProxyPassReverse http://127.0.0.1:8085 ProxyPassReverse https://gitlab.my_domain.com/  # apache equivalent of nginx try files # http://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files # https://stackoverflow.com/questions/10954516/apache2-proxypass-for-rails-app-gitlab RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA] RequestHeader set X_FORWARDED_PROTO 'https' # needed for downloading attachments DocumentRoot /home/git/gitlab/public #Set up apache error documents, if back end goes down (ie 503 error) then a maintenance/deploy page is thrown up. ErrorDocument 404 /404.html ErrorDocument 422 /422.html ErrorDocument 500 /500.html ErrorDocument 503 /deploy.html LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded ErrorLog /var/log/apache2/gitlab-ssl_error.log CustomLog /var/log/apache2/gitlab-ssl_forwarded.log common_forwarded CustomLog /var/log/apache2/gitlab-ssl_access.log combined env=!dontlog CustomLog /var/log/apache2/gitlab-ssl.log combined   

(da https://github.com/gitlabhq/gitlab-recipes/blob/master/web-server/apache/gitlab-ssl-apache2.4.conf )

Sono finito qui mentre cercavo su Google per gli errori che ho riscontrato durante l’impostazione di Rails + unicorn usando Apache (sulla porta 80) per il proxy su unicorn (sulla porta 3000). Nel caso sia utile a chiunque altro, ecco la mia configurazione:

  ServerAdmin [email protected] ServerName example.com ServerAlias www.example.com ProxyPreserveHost On  Require all granted ProxyPassReverse http://example.com:3000  RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule .* http://example.com:3000%{REQUEST_URI} [P,QSA] DocumentRoot /home/user/rails-dir/public ErrorDocument 404 /404.html ErrorDocument 422 /422.html ErrorDocument 500 /500.html ErrorDocument 503 /deploy.html LogLevel warn ErrorLog /home/user/rails-dir/log/apache-error.log CustomLog /home/user/rails-dir/log/apache-access.log combined  

Questa domanda mi preoccupa anche da molto tempo. È riparato ora.
La risorsa più utile proviene dal documento ufficiale di Gitlab sull’utilizzo di un server Web non in bundle .
Offrono anche una ricetta completa .

Se si utilizza Apache versione 2.4 o successiva, utilizzare i file gitlab-apache24.conf o gitlab-ssl-apache24.conf per le versioni HTTP e HTTPS del vhost in modo reptivo.

Se si utilizza Apache versione 2.2, si prega di utilizzare i file gitlab-apache22.conf o gitlab-ssl-apache22.conf per le versioni HTTP e HTTPS del vhost in modo reiterato.

Il problema ora è semplice

Assicurati di scegliere il file di configurazione giusto a seconda che tu scelga di servire GitLab con SSL o meno. L’unica cosa che devi cambiare è YOUR_SERVER_FQDN con il tuo FQDN e se utilizzi SSL, la posizione in cui risiedono attualmente le tue chiavi SSL. Potrebbe anche essere necessario modificare la posizione dei file di registro.

per verificare la versione di Apache2, usa apache2 -version
Se si utilizza la versione HTTPS, potrebbe essere necessario assicurarsi che il file cert sia distribuito correttamente, ad esempio che i file siano coerenti con il file della ricetta specificato.