正如标题所述,我在让 Nginx 为子域提供服务时遇到了麻烦。它不断地为主域提供服务。无论我请求 www.example.com 还是 git.example.com,它都会继续为 www.example.com 提供服务(这是唯一受密码保护的 conf)。所有请求都写入 access.log 中,而子域 access.log 中没有任何内容。
以下是我直接放在 sites-enabled 文件夹中的配置文件:
主要的
server {
listen 80;
server_name www.example.com;
root /var/www/html;
index index.nginx-debian.html;
location / {
auth_basic "Login";
auth_basic_user_file /var/www/.htpasswd;
try_files $uri $uri/ =404;
}
location ~ /\. {
deny all;
}
}
GitLab(来源 :https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/web-server/nginx/gitlab-omnibus-nginx.conf)
upstream gitlab-workhorse {
server unix:/var/opt/gitlab/gitlab-workhorse/socket;
}
server {
listen 0.0.0.0:8080;
listen [::]:8080;
server_name git.example.com;
server_tokens off;
root /opt/gitlab/embedded/service/gitlab-rails/public;
access_log /var/log/nginx/gitlab_access.log;
error_log /var/log/nginx/gitlab_error.log;
location / {
client_max_body_size 0;
gzip off;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_$
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://gitlab-workhorse;
}
}
我目前所做的:
- 删除主要内容后,Nginx 不再提供任何服务;
- 删除 gitlab,然后 Nginx 同时为 www 和 gitlab 提供 www 服务;
- 全新安装的 Nginx 并未改变任何内容。
我刚刚花了 4 个小时解决这个问题,但无法自己解决或使用互联网解决。我接受任何想法!
答案1
您的主域是唯一在端口 80 上监听的 vhost。将您的 git vhost 也切换到端口 80,它就应该可以工作了。