docker部署nginx问题,nginx.conf引用conf.d的default.conf文件没有生效

请教下docker部署nginx问题,我在nginx.conf中引用了conf.d的default.conf文件但是没有生效
nginx.conf

user  nginx;  
worker_processes  auto;  

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;  

events {
    worker_connections  1024;  
}

http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;  

    sendfile        on;  
    client_max_body_size 100M; 
    tcp_nopush     on;  
    tcp_nodelay    on;  
    keepalive_timeout  65; 
    types_hash_max_size  2048; 
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 2;
	gzip_types text/plain
		application/javascript
		application/x-javascript
		text/css
		application/xml
		text/javascript
		application/x-httpd-php
		image/jpeg
		image/gif
		image/png;
	gzip_vary on;  

    include /etc/nginx/conf.d/*.conf;  

    server {
        listen       80;  
        server_name  localhost;  

        location / {
            root   /usr/share/nginx/html; 
            index  index.html index.htm; 
        }


        error_page  404              /404.html;  
        location = /404.html {
            internal;
        }

        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {
            internal;
        }
    }
}


default.conf

server {
    listen 80;
    listen [::]:80;
    server_name xx.cn;  
    

    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on; 
    server_name xx.cn;


  
    ssl_certificate xxx.pem;     
    ssl_certificate_key xx.key;  

 
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;


    location /blog/ {
        proxy_pass http://localhost:11102/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        

        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
    }


    location /status/ {
        proxy_pass http://localhost:3001/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }


    location = /favicon.ico {
        access_log off;
        log_not_found off;
    }

        
	location /files/ {
		charset utf-8;
		#allow 124.64.18.162;
		#deny all;						
		root /home/meta/;
		autoindex on;
	}

    # 错误页面配置
    error_page 404 /404.html;
    location = /404.html {
        internal;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        internal;
    }
}
5 个赞

你是会氺的

1 个赞

这是脚本回复?

1 个赞

你得放出docker 命令或者docker-compose配置啊
而且不生效,准确描述模板应该是:
你做了什么,
期望什么
实际是什么

1 个赞

我是用的1panel

2 个赞

怎么可能纯手动

1 个赞

看看你docker怎么启动的,可以参考这个
docker run --name=nginx -d -p 80:80 -v /你的nginx.conf目录:/etc/nginx/conf.d nginx

1 个赞

这样的

docker run --name nginx \
  -p 80:80 \
  -p 443:443 \
  -v nginxConfig:/etc/nginx \
  -v nginxLog:/var/log/nginx \
  -d nginx:latest
docker exec -it nginx sh

进容器看看映射正确没

1panel 不是有 OpenResty 吗?
而且 nginx 没有用 host 网络模式,肯定处理不了外部请求啊

localhost 不对吧,不知道你具体部署信息只能盲猜docker inspect nginx 可以查看nginx容器信息,这里的nginx是你的nginx容器名,你会看到他的网关,172开头的,local host 改成它就代表请求宿主机了,或者,你docker inspect blog 查看你的blog容器信息,你会看到同样的一个172的容器ip localhost改成它也行,这个的前提是他们在同一个网段

localhost 肯定不对呀,这里需要转发到 容器的名字

你得xxxx.conf文件映射到/etc/nginx/conf.d

在defualt中把localhost改成容器ip也不行

我是映射到ngxin.conf,nginx.conf中引用了conf.d

发一下你的 blog 部署命令,可以脱敏,如果是 docker compose也行

这个也是通过1panel docker部署的,具体命令我没有用直接面板启动的

虽然我没用过1panel,但是原理应该一样的,你如果直接用物理机 ip+3001能访问的话,那么你 docker inspect nginx出来的那个 gateway ip 填到 localhost 那,应该也可以访问。类似这样

填geteway的ip还是下面的那个ipaddress,我现在是填的是ipaddress

看下我说的前提,你物理机 ip+端口可以访问的话,就填geteway