在我的VPS上安装GitLab之前,我使用的是Apache2。我只想让GitLab成为我网站的子域名(git.example.com),并让我的主站点(www.example.com)查看/var/www/html/index.html
以下是我的nginx.conf文件:
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;
}
}
}
答案 0 :(得分:6)
这是我的设置,适用于子域。
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;
}
}
答案 1 :(得分:2)
在这里,我做了什么,我不知道它是否是最佳的但是有效。
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;
}
}
}
在<{1}}中,取消注释/编辑此行:
gitlab.rb
答案 2 :(得分:1)
您需要为每个项目(Gitlab和您的主站点)创建两个不同的vhost文件。
在您的Gitlab vhost文件中,您可以使用默认文件,更改某些字段:
# 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
}
}
然后,在/ sites-enabled /文件夹中创建一个新的符号链接:
$ sudo rm /etc/nginx/sites-enabled/example
$ sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example
重新启动Nginx service nginx restart
。
如果仍然无效,请使用tail -f /var/log/nginx/gitlab_error.log
查看错误日志。这可以帮助您弄清楚您还缺少什么。
注意:强> 对于这个答案,我使用的PHP版本是5.3.10,Nginx版本是1.1.19。
<强>参考强>
如何将Nginx配置为Apache的反向代理 - https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-reverse-proxy-for-apache