your please for external_url linux configuration nginx webserver gitlab

linux - please - Cómo configurar GitLab como un subdominio en nginix.conf



nginx reverse proxy gitlab (3)

Estaba usando Apache2 antes de instalar GitLab en mi VPS. Solo quiero hacer de GitLab un subdominio de mi sitio (git.example.com) y hacer que mi sitio principal (www.example.com) mire en /var/www/html/index.html

Aquí está mi archivo nginx.conf a partir de ahora:

user www-data; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { include /etc/nginx/mime.types; access_log /var/log/nginx/access.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_disable "MSIE [1-6]/.(?!.*SV1)"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; upstream gitlab { server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket; } server { listen 80; server_name www.example.com; root /home/gitlab/gitlab/public; # individual nginx logs for this gitlab vhost access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; location / { # serve static files from defined root folder;. # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; } # if a file, which is not found in the root folder is requested, # then the proxy pass the request to the upsteam (gitlab unicorn) location @gitlab { proxy_redirect off; # you need to change this to "https", if you set "ssl" directive to "on" proxy_set_header X-FORWARDED_PROTO http; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://gitlab; } } }


Aquí está mi configuración que funciona en un subdominio.

server { listen 80; server_name gitlab.example.com; root /home/gitlab/gitlab/public; # individual nginx logs for this gitlab vhost access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; location / { # serve static files from defined root folder;. # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; } # if a file, which is not found in the root folder is requested, # then the proxy pass the request to the upsteam (gitlab unicorn) location @gitlab { proxy_redirect off; # you need to change this to "https", if you set "ssl" directive to "on" proxy_set_header X-FORWARDED_PROTO http; proxy_set_header Host gitlab.example.com:80; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://gitlab; } }


Deberá crear dos archivos vhost diferentes para cada uno de los proyectos (Gitlab y su sitio principal).

En su archivo vhost de Gitlab, puede usar el archivo predeterminado, cambiando algunos campos:

# GITLAB repository upstream gitlab { server unix:/home/git/gitlab/tmp/sockets/gitlab.socket; } server { listen 80; # In most cases *:80 is a good idea server_name git.example.com; # E.g., server_name source.example.com; server_tokens off; # don''t show the version number, a security best practice root /home/git/gitlab/public; # Where your repository is located index index.php index.html index.htm; # Extensions to look for # Logs for this gitlab vhost. If something goes wrong, check these files to figure out what is missing access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; location / { # serve static files from defined root folder;. # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; } # if is a file that could not be found in the root folder is requested, # then the proxy pass the request to the upsteam (gitlab unicorn) location @gitlab { proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_redirect off; proxy_set_header X-Forwared-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host git.example.org:80; # Host name for your Gitlab Project proxy_pass http://gitlab; # Alias } }

Luego, cree un nuevo enlace simbólico en su carpeta / sites-enabled /:

$ sudo rm /etc/nginx/sites-enabled/example $ sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example

Reinicie el service nginx restart Nginx service nginx restart .

Si aún no funciona, revise su registro de errores utilizando tail -f /var/log/nginx/gitlab_error.log . Esto puede ayudarte a descubrir qué más te estás perdiendo.

Nota: Para esta respuesta, la versión de PHP que utilicé fue 5.3.10 y la versión de Nginx fue 1.1.19.

Referencias

Cómo configurar Nginx como un proxy inverso para Apache - https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-reverse-proxy-for-apache

Comando Tail - http://en.wikipedia.org/wiki/Tail_%28Unix%29


Esto es lo que hice, no sé si es óptimo, pero funciona.

nginx.conf :

events { worker_connections 1024; } http { include /etc/nginx/mime.types; root .; server { listen 80; server_name www.whatever.com whatever.com; } server { listen 80; server_name gitlab.whatever.com; location / { proxy_pass http://127.0.0.1:8000; } } }

en gitlab.rb , descomenta / edita esta línea:

nginx[''listen_port''] = 8000