首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角5 nginx猫鼬船坞ERR_EMPTY_RESPONSE

角5 nginx猫鼬船坞ERR_EMPTY_RESPONSE
EN

Stack Overflow用户
提问于 2017-12-28 02:06:07
回答 3查看 982关注 0票数 2

通过下面的设置,我可以看到我的网站,但我得到了一个ERR_EMPTY_RESPONSE时,我试图注册。

注册时,我向API.js发出HTTP请求,这将在user.js中创建/更新架构。

这通常在不使用Docker/Nginx时起作用。我试着直接连接到容器映像"mongo“,我尝试了0.0.0.0:27017,但是我觉得我的app.js最初没有连接到Mongodb。

尽管到/main /profile等的路由是有效的。所以我假设app.js是通过index.html调用的

我有一种感觉,这是一件小事,使这个工作,但花了几个小时,我挣扎。我没有使用CORS,因为我使用的是Nginx。我对这些概念非常陌生,但我认为Nginx作为反向代理并不使用CORS?

docker-compose.yml中,当我将卷的目录更改为不存在的内容时,我仍然可以看到我的网站,好像它什么也不做一样,但是当我删除这个句子时,它给了我一个失败,所以它被调用了。不完全确定卷在此文件中的作用。

docker ps给出了以下输出:

代码语言:javascript
复制
 CONTAINER    ID             IMAGE  COMMAND           CREATED           STATUS              PORTS             NAMES

 f58507ed0205 meanchat_web   "nginx -g 'daemon ..."   55 seconds ago      Up 54 seconds       0.0.0.0:80->80/tcp               meanchat_web_1

 cddfd8180f1b        meanchat_node       "nginx -g 'daemon ..."   2 hours ago         Up 55 seconds       80/tcp, 0.0.0.0:3000->3000/tcp   meanchat_node_1

 79a013dd4e51        mongo               "docker-entrypoint..."   2 hours ago         Up 55 seconds       0.0.0.0:27017->27017/tcp         meanchat_mongo_1

app.js**:**

代码语言:javascript
复制
 var mongo= require('mongodb');

//var cors = require('cors');
 var mongoose = require('mongoose');

 var connect = require('./models/user')
 connect.connect('mongodb://localhost/loginapp');
 var db = mongoose.connection;

user.js**:**

代码语言:javascript
复制
 module.exports.connect = function(mongoUri, promiseLib){

 var mongoDB = mongoose.connect(mongoUri);
  return mongoDB
  };

DockerFile**:**

代码语言:javascript
复制
 ### STAGE 1: Build ###

 # We label our stage as ‘builder’
 FROM node:8.1.4-alpine as builder

 COPY package.json package-lock.json ./

 ## Storing node modules on a separate layer will prevent unnecessary 
 pm installs at each build
 RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app

 WORKDIR /ng-app

 COPY . .

 ## Build the angular app in production mode and store the artifacts
 in dist folder
 RUN $(npm bin)/ng build --prod
 ### STAGE 2: Setup ###

 FROM nginx:1.13.3-alpine

 ## Copy our default nginx config
 COPY nginx/default.conf /etc/nginx/conf.d/

 ## Remove default nginx website
 RUN rm -rf /usr/share/nginx/html/*

 ## From ‘builder’ stage copy over the artifacts in dist folder to default
 nginx public folder
 COPY --from=builder ./dist /usr/share/nginx/html

 CMD ["nginx", "-g", "daemon off;"]

docker-compose.yml**:**

代码语言:javascript
复制
 version: '3'
 services:
 web:
  build: ./
  ports:
  - "80:80"
  links:
  - node
  volumes:
   - "./dist :/usr/share/nginx/html"
 node:
  build: ./
  ports:
  - "3000:3000"
   links:
   - mongo
 mongo:
 image: mongo
 ports: 
 - "27017:27017"

main.ts**:**

EN

回答 3

Stack Overflow用户

发布于 2017-12-28 02:13:41

我从撰写输出中可以看出,mongo在您的app.js中没有正确地连接。

将该行connect.connect('mongodb://localhost/loginapp');更改为

connect.connect('mongodb://mongo/loginapp');

然后运行docker-compose builddocker-compose up,它应该连接。

票数 1
EN

Stack Overflow用户

发布于 2017-12-28 02:20:52

图像蒙戈没有连接。

你应该用

代码语言:javascript
复制
connect.connect('mongodb:27017//localhost/db'); 

连接到数据库。

票数 0
EN

Stack Overflow用户

发布于 2017-12-28 03:17:21

我尝试了您的两个选项,但结果似乎是一样的,我再次发送输出。就像你提到的那样,我确实做了码头写作和码头写作。

我正在对api执行以下操作,以便将其注册到mongodatabase。

代码语言:javascript
复制
 let url = 'http://localhost:3000/api/register';
 return this.http.post(url, user)

通过从D:/ mongodb /bin文件夹执行mongo://0.0.0.0:27017,我能够连接到容器中的mongodb。它确实给了我这样的警告:数据库没有启用访问控制。

我关闭了防火墙,没有自动取款机激活。

我搜索了我得到的访问控制警告,这似乎意味着我需要在mongodb上创建一个授权帐户?这是必需的,即使当使用猫鼬,没有码头/nginx,我没有这个问题。也许这和mongodb的形象有关吧?

我通过登录到数据库中添加了一个管理帐户:$username$ db.createUser( { user:"username",pwd:"password",roles:{ role:"root",db:" admin“})

代码语言:javascript
复制
mongo:
  environment:
  - MONGO_INITDB_ROOT_USERNAME=username
  - MONGO_INITDB_ROOT_PASSWORD=password
image: mongo
ports: 
- "27017:27017"

现在,我能够连接到数据库,而不启用acces控件,但是,当我尝试注册时,我仍然得到相同的ERR_empty_response。那么,是否有一种方法可以完全摆脱访问控制,还是必须向猫鼬的模式中添加一些内容,以便当我试图在LoginApp上更改或创建用户时,它正在正确地进行身份验证?

例如,newUser.save现在可能无法工作,因为它需要单独的身份验证?

下面的图片是我现在得到的,但是访问猫鼬数据库仍然不工作。

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

https://stackoverflow.com/questions/48000788

复制
相关文章

相似问题

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