Nginx并不是仅代理主机名的请求,而是代理具有路径的请求

时间:2019-06-25 18:23:08

标签: nginx

我正在设置一个新应用,并且试图使用Nginx将请求代理到不同的Docker容器。我无法获得“欢迎使用nginx!”页面停止显示对网站的请求(http://szabado.com/)。如果我添加一些路径,它将代理该路径,但是它拒绝仅使用裸主机名代理请求。

我尝试查看nginx config pitfalls,但看不到任何似乎相关的内容?

nginx.conf:

events {
  worker_connections  1024;
}

http {
    # Use the default docker DNS host
    resolver 127.0.0.11;

    server {
        listen 80;
        server_name szabado.com www.szabado.com;

        # Case insensitive, just match any path that starts with API and send it to the API container
        location /api {
            set $upstreamAPI http://goldyapi:8080;
            proxy_pass $upstreamAPI;
        }

        location / {
            set $upstreamUI http://goldyui:8080;
            proxy_pass $upstreamUI;
        }
    }
}

用于创建nginx容器的Dockerfile:

FROM nginx

COPY nginx.conf /etc/nginx/nginx.conf

我希望它像显示任何随机路径一样显示Invalid Host header,但是它显示欢迎页面。

2 个答案:

答案 0 :(得分:0)

它带有一个“默认”虚拟主机。查看/ etc / nginx / sites-available / default中是否存在默认的Nginx配置文件并将其删除。

并将您的默认设置修改为

server {
     listen 80 default_server;
     server_name szabado.com www.szabado.com;
...

答案 1 :(得分:0)

原来,我需要删除/etc/nginx/conf.d/default.conf。更新的Dockerfile:

FROM nginx

RUN rm /etc/nginx/conf.d/default.conf

COPY nginx.conf /etc/nginx/nginx.conf

RUN nginx -T