我有一个简单的特快应用程序:
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的配置如下:
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;
}
}我有一个码头组合,可以与其他服务一起运行这两个服务:
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"}。知道是什么导致了这个错误吗?
发布于 2022-07-19 13:59:17
您在nginx配置中设置了"server_name app.dev www.app.dev;“,因此只有具有主机头"app.dev”和"www.app.dev“的请求才符合此配置。如果不设置主机头,则它们与/etc/nginx.conf中的默认配置匹配。请将主机头设置为您的请求。
curl -H "Host: app.dev" localhost此外,您还可以在主机中设置"127.0.0.1 app.dev www.app.dev“(linux中的”/etc/www.app.dev“),并在浏览器中打开app.dev,或者在终端中使用curl:
curl app.dev但是,您可以从nginx中删除"server_name app.dev www.app.dev;“行,并在没有主机头的情况下进行测试。
https://stackoverflow.com/questions/73037931
复制相似问题