94729


**実行環境:**  
Apache 2.4.37  
GitLab 15.11.0  
CentOS

やりたいこと：ApacheとGitlab-ctlをStartして両方のトップページを表示したい。

Apacheにはポート80をListenしています。  
このままGitlabをstartさせると競合するため、VirtualHostをhttpd設定ファイルに記述しており、Gitlabのeternal_urlにhttp://URL/gitlabと設定しています。

解釈ではApache→Nginx→gitlabとルーティングしてページを表示するイメージですが間違っているのかうまくいきません。

servernameはサーバーのIPアドレスにしており、VirtualHostで*:80 NginxでListen
するのはApacheと同じポートにしています。そうするとGitlabのURLで503エラーになります。

質問の仕方が悪いなどはあると思いますし、あまりどこをどうすればいいのかわからないのでそのほかにも必要な情報があればご教示ください。  
よろしくお願いします。

※追記VirtualHost(現状に編集5/8）

[code]

    listen 80
    <VirtualHost *:80>
      ServerName [IPアドレス]
      ProxyPreserveHost On
    
      ProxyPass /gitlab http://localhost:8080/gitlab
      ProxyPassReverse /gitlab http://localhost:8080/gitlab
    
      RewriteEngine on
      RewriteCond %{REQUEST_URI} ^/assets/
      RewriteRule .* - [L]
    
      ProxyRequests Off
      ProxyVia Off
      <Proxy *>
        Require all granted
      </Proxy>
    </VirtualHost>
    
[/code]

nginxの記述

[code]

    server {
      listen 8080;
      server_name IPアドレス;
    
      location /gitlab {
        proxy_pass http://localhost:7000/gitlab;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    
     location / {
            proxy_pass http://localhost:7000;
            proxy_set_header Host $host;
        }
    }
    
    eternal_url
    http://IPアドレス:7000/gitlab
    
[/code]


CC BY-SA 4.0
2023-05-02T09:18:02.647
94717
2023-05-08T03:48:46.887
2023-05-08T03:48:46.887
57192
57192
question
centos apache nginx gitlab
ApacheにVirtualHostでGitlabのページを表示するのが上手くいきません


Apacheの`ProxyPass`(および`ProxyPassReverse`)の設定が、

[code]

    http://IPアドレス:7000/gitlab
    
[/code]

であれば、gitlabの`external_url`の設定は

[code]

    http://IPアドレス:7000
    
[/code]

かと思います。

＃机上調査のため試してはいません。  
＃合わせて、gitlab(nginx)のListenポートも7000にする必要があると思います。

* * *

### 訂正と追記

gitlabの構成を誤解しており、Proxyの転送先を誤っておりました。失礼しました。  
次のようにすることで動作しないでしょうか?

  1. Apacheとnginxの両方で、同一ポート(この場合`80`)でListenすることはできません。nginxの`Listen`を`8080`等、別ポートにする必要があります。
  2. その上で、ApacheのProxy先をnginxにする必要があります。

例

[code]

      ProxyPass /gitlab http://IPアドレス:8080/gitlab
      ProxyPassReverse /gitlab http://IPアドレス:8080/gitlab
    
[/code]

＃なお、以下の理解はあっていると思います。

> 解釈ではApache→Nginx→gitlabとルーティングしてページを表示するイメージですが


CC BY-SA 4.0
2023-05-03T11:19:41.463
94729
2023-05-04T04:56:11.183
2023-05-04T04:56:11.183
20098
20098
94717
answer