首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >出现nginx主页而不是我的应用程序。

问出现nginx主页而不是我的应用程序。
EN

Stack Overflow用户
提问于 2022-07-19 13:33:10
回答 1查看 28关注 0票数 0

我有一个简单的特快应用程序:

代码语言:javascript
复制
const express = require('express');

const port = process.env.PORT || 3000;

const app = express();

app.get('/', (_, res) => {
    res.status(200).json({
        type: 'test'
    })
})

app.listen(port, () => {
    console.log('App is running at 3000')
})

我使用nginx的配置如下:

代码语言:javascript
复制
server {
    listen       80;
    server_name  app.dev www.app.dev;

    gzip on;
    gzip_disable "msie6";

    gzip_comp_level 6;
    gzip_min_length 1100;
    gzip_buffers 16 8k;
    gzip_proxied any;
    gzip_types
    text/plain
    text/css
    text/js
    text/xml
    text/javascript
    application/javascript
    application/x-javascript
    application/json
    application/xml
    application/rss+xml
    image/svg+xml;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_redirect off;

    location / {
      proxy_pass http://app:3000;
    }
}

我有一个码头组合,可以与其他服务一起运行这两个服务:

代码语言:javascript
复制
version: '3.2'

services:
 
  elasticsearch:
    container_name: elasticsearch
    build:
      context: elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./elasticsearch/config/elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: changeme
    links: 
      - kibana
    networks:
      - elk

  logstash:
    container_name: logstash
    build:
      context: logstash/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./logstash/config/logstash.yml
        target: /usr/share/logstash/config/logstash.yml
        read_only: true
      - type: bind
        source: ./logstash/pipeline
        target: /usr/share/logstash/pipeline
        read_only: true
    ports:
      - "5000:5000"
      - "9600:9600"
    expose: 
      - "5044"
    networks:
      - elk
    depends_on:
      - elasticsearch

  kibana:
    container_name: kibana
    build:
      context: kibana/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./kibana/config/kibana.yml
        target: /usr/share/kibana/config/kibana.yml
        read_only: true
    ports:
      - "5601:5601"
    networks:
      - elk

  app:
    container_name: app
    build : ./app
    volumes:
      - ./app/:/usr/src/app
      - /usr/src/app/node_modules/ # make node_module empty in container
    command: npm start
    ports:
      - "3000:3000"
    networks:
      - elk

  nginx:
    container_name: nginx
    build: ./nginx
    volumes:
      - ./nginx/config:/etc/nginx/conf.d
      - ./nginx/log:/var/log/nginx
    ports:
      - "80:80"
      - "443:443"
    links:
      - app:app
    depends_on: 
      - app
    networks:
      - elk

  filebeat:
    container_name: filebeat
    build: ./filebeat
    entrypoint: "filebeat -e -strict.perms=false"
    volumes:
      - ./filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml
      - ./nginx/log:/var/log/nginx
    networks:
      - elk
    depends_on: 
      - app
      - nginx
      - logstash
      - elasticsearch
      - kibana
    links: 
      - logstash

networks:
  elk:
    driver: bridge

volumes:
  elasticsearch:

问题是,如果我访问localhost:80,我看到的是nginx主页,而不是我所期望的,即消息{"type":"test"}。知道是什么导致了这个错误吗?

EN

回答 1

Stack Overflow用户

发布于 2022-07-19 13:59:17

您在nginx配置中设置了"server_name app.dev www.app.dev;“,因此只有具有主机头"app.dev”和"www.app.dev“的请求才符合此配置。如果不设置主机头,则它们与/etc/nginx.conf中的默认配置匹配。请将主机头设置为您的请求。

代码语言:javascript
复制
curl -H "Host: app.dev" localhost

此外,您还可以在主机中设置"127.0.0.1 app.dev www.app.dev“(linux中的”/etc/www.app.dev“),并在浏览器中打开app.dev,或者在终端中使用curl:

代码语言:javascript
复制
curl app.dev

但是,您可以从nginx中删除"server_name app.dev www.app.dev;“行,并在没有主机头的情况下进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73037931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档