nginx启动失败如何解决

操作

首先nginx不是自己部署,要先启动一下

docker start nginx

发现打印出了nginx 但是 docker ps 发现 nginx还是启动失败

Nginx启动失败快来看看这些解决方法!

于是准备查看日志

docker logs -f nginx

报了一堆错误,也不知道是什么时候打的日志,后来解决之后猜测是因为配置文件为空的原因,因为没有找到event模块

所以首先看一下nginx的容器信息

docker inspect nginx

找到挂载信息了,可以看看配置文件,发现 /usr/nginx/conf 里面没有配置文件,这个时候就应该找到了问题;可是运维同学在查询问题的时候创建了一个空的nginx.conf,我没有打开配置文件

后来在老大的提醒下打开了配置文件发现是空的,然后就对配置文件进行了修改

先找了一个默认的nginx.conf的配置

#user nobody;

worker_processes 1;


#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;

}
http {
include mime.types;

default_type application/octet-stream;

#log_format main '
$remote_addr - $remote_user [$time_local] "
$request"
'

# '
$status $body_bytes_sent "
$http_referer"
'

# '
"
$http_user_agent"
"
$http_x_forwarded_for"
'
;

#access_log logs/access.log main;

sendfile on;

#tcp_nopush on;

#keepalive_timeout 0;

keepalive_timeout 65;

#gzip on;

server {
listen 80;

server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root html;

index index.html index.htm;

}
#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;

location = /50x.html {
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;

#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
# root html;

# fastcgi_pass 127.0.0.1:9000;

# fastcgi_index index.php;

# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

# include fastcgi_params;

# deny access to .htaccess files, if Apache'
s document root
# concurs with nginx'
s one
#location ~ /\.ht {
# deny all;

}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;

# listen somename:8080;

# server_name somename alias another.alias;

# location / {
# root html;

# index index.html index.htm;

# }
#}
# HTTPS server
# listen 443 ssl;

# server_name localhost;

# ssl_certificate cert.pem;

# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;

# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;

# ssl_prefer_server_ciphers on;

然后docker start nginx 发现可以启动了

接下来增加正确的jira配置

location / {
proxy_pass http://192.168.1.111:8080;

proxy_redirect off;

proxy_set_header Host $host:$server_port;
##重点在$server_port
proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_max_temp_file_size 0;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_buffer_size 4k;

proxy_buffers 4 32k;

proxy_busy_buffers_size 64k;

proxy_hide_header Vary;

proxy_set_header Accept-Encoding '
'
;

proxy_set_header Referer $http_referer;

proxy_set_header Cookie $http_cookie;

}

进入容器检测一下配置文件是否有问题

docker exec -it 容器id /bin/bash

nginx路径寻找 find / -name nginx

./nginx/sbin/nginx -t

检测发现少了一个}

:set nu

找到具体行,然后修复

ctrl +D // 退出容器

启动nginx

docker restart nginx

Nginx是现今被广泛使用的Web服务器之一,但在使用过程中,有时我们会遇到启动失败的情况。在面对这种情况时,我们需要快速有效地找到解决方法,以避免时间和资源的浪费。下面将介绍一些常见的Nginx启动失败的问题以及如何解决。
1. 端口被占用
在启动Nginx时,有时会出现端口被占用的情况,导致启动失败。这时,我们可以使用以下命令查看端口是否被占用:
$ lsof -i :端口号
如果结果中显示端口号被占用,我们可以使用以下命令杀死进程:
$ sudo kill -9 进程号
如果我们无法找到哪个程序占用了端口,可以使用以下命令杀死端口所有的占用程序:
$ sudo fuser -k 端口号/tcp
2. 配置文件错误
Nginx的配置文件包含了服务器的重要配置信息,如果配置文件存在错误,启动将会失败。此时,我们可以使用以下命令检查语法错误:
$ nginx -t
如果存在错误,命令行会直接显示错误信息。
如果发现错误,我们可以打开配置文件,查看并修复错误。修复后,再次检查语法是否正确,如正确,则重新启动Nginx。
3. 权限问题
权限问题也可能导致Nginx启动失败。例如,在Ubuntu中,如果执行以下命令:
$ sudo service nginx start
将会提示没有使用sudo时无法启动Nginx。这种情况下,我们需要使用sudo权限启动Nginx,命令如下:
$ sudo systemctl start nginx
在Windows上,我们需要以管理员身份运行命令提示符或Powershell。
总结
以上解决方法虽然只是针对常见问题的一些解决方法,但它们覆盖了许多可能导致Nginx启动失败的原因。在解决问题时,我们应该耐心检查和排除每一个可能存在的错误,以便快速恢复Nginx的服务。希望这篇文章能给你带来帮助。