로 컬 Node. js 서버 를 api 서버 로 하 는 해결 방법
//
var express = require('express');
var app = express();
// set up handlebars view engine
var handlebars = require('express3-handlebars')
.create({ defaultLayout:'main' });
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
app.set('port', process.env.PORT || 3000);
app.use(express.static(__dirname + '/public'));
var fortuneCookies = [
"Conquer your fears or they will conquer you.",
"Rivers need springs.",
"Do not fear what you don't know.",
"You will have a pleasant surprise.",
"Whenever possible, keep it simple.",
];
app.get('/', function(req, res) {
res.render('home');
});
app.get('/about', function(req,res){
var randomFortune =
fortuneCookies[Math.floor(Math.random() * fortuneCookies.length)];
res.render('about', { fortune: randomFortune });
});
// 404 catch-all handler (middleware)
app.use(function(req, res, next){
res.status(404);
res.render('404');
});
// 500 error handler (middleware)
app.use(function(err, req, res, next){
console.error(err.stack);
res.status(500);
res.render('500');
});
app.listen(app.get('port'), function(){
console.log( 'Express started on http://localhost:' +
app.get('port') + '; press Ctrl-C to terminate.' );
});
위의 이 코드 는 127.0.0.1: 3000 포트 에서 로 컬 서버 를 시작 하지만 핸드폰 쪽 에 서 는 접근 할 수 없습니다.
우 리 는 이 문 제 를 해결 하기 위해 다른 node. js 서버 를 다시 시작 합 니 다.
//proxy.js
var http = require('http'),
httpProxy = require('http-proxy'); //
// Proxy Server
var proxy = httpProxy.createProxyServer({});
//
proxy.on('error', function (err, req, res) {
res.writeHead(500, {
'Content-Type': 'text/plain'
});
res.end('Something went wrong. And we are reporting a custom error message.');
});
// HTTP 80 , Node HTTP 。
// , proxy.web(req, res config)
var server = require('http').createServer(function(req, res) {
//
var host = req.headers.host, ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
console.log("client ip:" + ip + ", host:" + host);
switch(host){ // ip ,
//127.0.0.1:3000
case '192.168.0.101:8080': //
// window ipconfig ,mac/linux ifconfig
case 'bbs.aaaa.com':
proxy.web(req, res, { target: 'http://127.0.0.1:3000' }); //
break;
default:
res.writeHead(200, {
'Content-Type': 'text/plain'
});
res.end('Welcome to my server!');
}
});
console.log("listening on port 8080")
server.listen(8080);
node proxy. js 이후 proxy 서버 를 시 작 했 습 니 다. 컴퓨터 의 ip 주 소 를 통 해 127.0.0.1 api 경로 에 접근 할 수 있 습 니 다.
nginx 를 사용 하 는 것 도 요구 에 도달 할 수 있 습 니 다. mac 에서 homebrew 패키지 관 리 를 사용 하 는 것 이 상당히 편리 합 니 다. bash 에서 brew install nginx 를 설치 하여 brew services start nginx 를 시작 합 니 다. 아 톰 편집기 bash 를 설치 하면 직접 아 톰 / usr / local / etc / nginx / nginx. conf 에서 설정 파일 의 본분 을 열 고 수정 합 니 다.
다음은 nginx. conf 설정 파일 입 니 다.
//nginx.conf
# 。 nginx.conf
events {
worker_connections 1024;
}
http {
include 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"';
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
server {
listen 8080; # 80880
server_name www.penguu.com 192.168.1.100; # 。
# Mac ifconfig 。 192.168.1.100
# 192.168.1.100:8080
# 23 80 , 80 。 mac 。 # 8080
# address_book service
# view/service.js->host, 192.168.1.100:8080
#access_log /var/log/nginx/test.log;
location / {
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_set_header Connection "";
proxy_pass http://127.0.0.1:3000; # address_book server , node.js ip
#node.js 127.0.0.1 ,port:3000 app.js 。 。
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.