gitlab自带的Nginx与原Nginx冲突的解决方案

gitlab

 

推荐方案2

 

默认情况下,gitlab使用自带的Nginx,占用80端口,这样就与系统原本安装的Nginx冲突。导致其中一个nginx无法启动

 

我的gitlab可以正常启动,当再部署一个接口文档的项目时,发现原nginx无法启动,报错如下,

[root@ACA83229 nginx]# service nginx restart
Stoping nginx... nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
 failed. Use force-quit
Terminating nginx...  done
Starting nginx... nginx (pid 25521 25520 25519 25518 25517 25516 25515) already running.

 

按照网上说的执行以下命令,并不能很好的解决问题。

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

 

后来想到可能是gitlab的Nginx冲突导致的,并成功解决

 

方案一:通过修改GitLab端口解决冲突

  • vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
upstream gitlab-workhorse {
  server unix:/var/opt/gitlab/gitlab-workhorse/socket;
}

server {
  listen *:80;  --修改端口


  server_name localhost;
  server_tokens off; ## Don't show the nginx version number, a security best practice
  ......
  ......
  只列举了其中一部分
}

将其中的80改为其它端口即可,如我的是8022,执行gitlab-ctl restart 重启gitlab等待网关恢复,重新访问:http://ip:8022 即可

 

方案二:禁用gitlab自带Nginx 并把 UNIX套接字 更改为 TCP端口

禁用捆绑的Nginx
vim /etc/gitlab/gitlab.rb

将
nginx['enable'] = true
修改为
nginx['enable'] = false
并去掉注释 (前边的#)

 

允许gitlab-workhorse监听TCP(默认端口设置为8021),编辑/etc/gitlab/gitlab.rb:

gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8021"  //这个端口号一会和Nginx代理的端口号要一致

 

运行 sudo gitlab-ctl reconfigure 使更改生效。

  • 通过系统原本安装的Nginx反代以便提供访问
$ vim /usr/local/nginx/conf/vhost/gitlab.conf
# 为原Nginx新建一个gitlab的配置文件
server {
    listen       8022;  #我的gitlab一般使用8022端口访问
    server_name  localhost;

    location / {
        root  html;
        index index.html index.htm;
        proxy_pass http://127.0.0.1:8021; #这里与前面设置过的端口一致
    }
}


systemctl restart nginx  或者 service nginx restart 重启

 

通过 172.168.50.41:8022 访问gitlab,一切OK

转载于:https://www.cnblogs.com/lz0925/p/10879763.html

<think>嗯,用户遇到了宝塔面板搭建网站时出现403 Forbidden错误的问题。我需要根据提供的引用信息和相关知识来解答这个问题。首先,403错误通常权限有关,比如文件或目录权限不足,或者服务器配置问题。用户提供的引用里提到了一些可能的因,比如接口调用的403错误可能服务器设置有关,还有目录索引权限的问题,以及路径配置错误的情况。 首先,我应该按照步骤来排查问题。第一步通常是检查文件权限。在Linux系统中,网站目录需要有适当的权限让Web服务器(如Nginx或Apache)访问。通常建议将目录权限设置为755,文件权限设置为644,所有者设为www用户。引用[3]中提到用户通过调整目录权限和配置解决了问题,这可能是一个关键点。 接下来,查看网站根目录是否正确。如果配置的目录路径错误,服务器无法找到文件,可能会返回403。比如,用户可能误将路径指向了不存在的目录,或者路径拼写错误。需要确认在宝塔面板的网站设置中,根目录是否指向了实际的网站文件存放位置。 然后,检查索引文件是否存在。如果目录中没有默认的索引文件(如index.html、index.php),而服务器又没有配置目录列表,就会导致403错误。确保这些文件存在并且命名正确。 服务器配置方面,可能需要检查Nginx或Apache的配置文件是否有错误。比如,是否限制了某些IP访问,或者重写规则有误。引用[2]提到了Gitlab部署时的404错误,虽然问题不同,但说明服务器配置的重要性。用户需要查看相关日志文件,如Nginx的error.log,来定位具体错误因。 防火墙和安全软件也可能导致403错误。宝塔面板自带的防火墙或者系统防火墙(如ufw、firewalld)可能阻止了访问。需要检查是否有相关规则拦截了求,尤其是当用户通过IP或特定端口访问时。 跨目录访问限制也是一个可能因素。如果网站程序尝试访问超出根目录的文件,服务器可能会阻止,导致403。在宝塔面板中,可以关闭跨站攻击防护(如防跨站)来测试是否是这个问题。 伪静态规则设置不当也可能引发问题。如果用户配置了错误的伪静态规则,可能会干扰正常求。尝试暂时禁用伪静态,看是否解决问题。 最后,SELinux或AppArmor等安全模块有时会限制Web服务器的访问权限。临时禁用这些模块,或者调整策略,可能有助于解决问题。 用户提供的引用[1]提到接口调用出现403错误,这可能涉及API权限或服务器配置,但同样适用于普通网站访问的情况。引用[3]中的用户通过调整路径和权限解决了问题,说明这两方面是常见因。 总结起来,解决步骤应该是:检查权限→确认目录路径→确保索引文件存在→检查服务器配置→查看防火墙设置→处理跨目录限制→调整伪静态→管理安全模块。同时,查看日志文件能快速定位问题。需要一步步引导用户进行排查,确保每个环节都正确配置,从而解决403错误。</think>### 宝塔面板网站403 Forbidden问题解决方案 #### 1. 检查文件目录权限 - **文件权限设置**:确保网站根目录及文件权限正确。Linux系统中,目录权限建议设为$755$(`chmod 755 /www/wwwroot/your_site`),文件权限设为$644$(`chmod 644 /www/wwwroot/your_site/*`)。 - **所有者权限**:目录所有者需为Web服务器用户(如`www`或`www-data`),使用命令: ```bash chown -R www:www /www/wwwroot/your_site ``` 引用[3]提到目录权限问题可能导致空白页或403错误[^3]。 #### 2. 确认网站根目录配置 - **路径正确性**:在宝塔面板的网站设置中,检查`网站目录`是否指向实际存放网站文件的路径(如`/www/wwwroot/your_site/public`)。 - **路径拼写错误**:例如将`public`误写为`pubic`会导致服务器无法定位文件[^3]。 #### 3. 检查索引文件是否存在 - **默认索引文件**:确保网站根目录包含`index.html`、`index.php`等默认索引文件。若缺失,服务器会返回403错误。 - **Nginx配置示例**: ```nginx location / { index index.php index.html index.htm; } ``` #### 4. 服务器配置检查 - **Nginx/Apache日志分析**:查看错误日志快速定位问题。 - Nginx日志路径:`/www/wwwlogs/your_site.error.log` - 常见错误:权限拒绝、文件不存在或配置语法错误[^1]。 - **IP限制规则**:检查是否在宝塔面板或配置文件中设置了`deny all`等限制规则。 #### 5. 防火墙安全设置 - **宝塔面板防火墙**:确保未拦截当前IP或端口。 - **系统防火墙**:若使用`ufw`或`firewalld`,需开放HTTP/HTTPS端口: ```bash ufw allow 80/tcp ufw allow 443/tcp ``` #### 6. 关闭跨目录访问限制 - **宝塔防跨站设置**: 在网站设置的`PHP版本`管理中,关闭`防跨站攻击(open_basedir)`选项。 此限制可能阻止PHP脚本访问上级目录,导致403错误[^3]。 #### 7. 检查伪静态规则 - **规则冲突**:错误的伪静态规则(如重写`URL`时遗漏条件)可能导致403。 临时禁用伪静态(宝塔面板中设置为`无`),测试是否恢复正常。 #### 8. SELinux/AppArmor权限问题 - **临时禁用测试**: ```bash setenforce 0 # 临时关闭SELinux ``` 若问题解决,需调整安全策略而非永久禁用。 --- ### 总结步骤 1. **检查日志**:通过`/www/wwwlogs/your_site.error.log`定位具体因。 2. **权限路径**:确保权限为`755/644`且路径正确。 3. **安全限制**:关闭防跨站、检查防火墙规则。 4. **配置文件**:验证Nginx/Apache配置无语法错误。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值