适用于Rails App Gitlab的Apache2 ProxyPass

Phi*_*Bot 10 apache proxy redirect apache2 proxypass

我正在尝试使用Apache2设置代理,以便传入http://myipaddress.com的请求转到http://localhost:3000/我运行Gitlab(rails应用程序)的地方.以下是我在Ubuntu 10.04上的Apache配置文件中的内容.我最初可以成功访问gitlab默认页面,但是之后通过点击其他页面执行的任何后续请求都会转到404 NOT FOUND页面.我可以在任何这些失败的重定向前面手动输入/ gitlab /它们工作得很好.在初始请求之后,如何在每次重定向请求之后不必重写/ gitlab /来完成这项工作?

## 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
<Proxy http://localhost:3000/>
  Order deny,allow
  Allow from all
</Proxy>
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用下面的代码,这将解决我的问题.但我不知道如何修改gitlab rails服务的前缀.我真的很感激一些帮助!

ProxyPass /gitlab/ http://localhost:3000/gitlab/
ProxyPassReverse /gitlab/ http://localhost:3000/gitlab/
Run Code Online (Sandbox Code Playgroud)

更新:

感谢Friek的评论,我已经非常接近解决这个问题了.下面是我的http.conf文件的一部分.唯一的问题是,当我点击主页按钮或gitlab应用程序上的徽标时,它会尝试重定向到gitlab /,这给了我Apache2的基本index.html文件,说'它有效!'.我怎么能配置这个让我简单地得到/ gitlab它带我到gitlab的根目录视图?谢谢!

## 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
<VirtualHost *:80>

        ServerName gitlab

        ## Set the overall Document Root
        DocumentRoot /var/www
        <Directory /var/www>
                Allow from all
        </Directory>

        ## Set the Rails Base URI
        RackBaseURI /gitlab
        RailsBaseURI /gitlab
        <Directory /var/www/gitlab>
                Allow from all
                Options -MultiViews
        </Directory>

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

E-r*_*ich 11

我遇到了这个对我有用的要点.如果它已经死了,我会重新发布它.


独角兽配置文件

编辑文件 /home/gitlab/gitlab/config/unicorn.rb

找行听"#{app_dir}/tmp/sockets/gitlab.socket"并评论它.取消注释线听"127.0.0.1:8080"

apache所需的模块

  • sudo a2enmod代理
  • sudo a2enmod proxy_balancer
  • sudo a2enmod proxy_http
  • sudo a2enmod重写

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

<VirtualHost *:80>
  ServerName git.domain.com

  # Point this to your public folder of teambox
  DocumentRoot /home/gitlab/gitlab

  RewriteEngine On

  <Proxy balancer://unicornservers>
    BalancerMember http://127.0.0.1:8080
  </Proxy>

  # 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

  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>

  # Custom log file locations
  ErrorLog  /var/log/apache2/gitlab_error.log
  CustomLog /var/log/apache2/gitlab_access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)