>웹 프론트엔드 >JS 튜토리얼 >nodejs로 웹서버를 구축하는 방법

nodejs로 웹서버를 구축하는 방법

不言
不言앞으로
2019-01-02 10:02:374709검색

이 기사의 내용은 nodejs를 사용하여 웹 서버를 구축하는 방법에 관한 것입니다. 참고할만한 가치가 있습니다. 도움이 될 수 있기를 바랍니다.

프런트 엔드에서는 데이터를 얻을 때 도메인 간 문제가 자주 발생합니다. 이 문제는 nginx를 역방향 프록시로 사용하여 해결할 수 있습니다. 그러나 nginx는 미들웨어 프록시이며 개발자마다 배포하는 웹 서버 주소가 다를 수 있으므로 nginx 구성이 보편적일 수는 없습니다.

클라이언트 프록시를 갖고 이를 프로젝트 소스 코드와 함께 제출할 수 있다면 여러 개발자를 위한 프록시 구성이 필요하지 않을 수 있습니다. webpack-dev-server는 그런 클라이언트 프록시인데, 해당 프로젝트에서 webpack을 사용하지 않는다면 사용할 방법이 없습니다. Webpack이 아닌 프로젝트를 위한 간단한 웹 서버를 모방하고 작성할 수 있습니까? 아래 코드는 여러분이 저를 비판하고 고쳐주셨으면 좋겠습니다.

const request = require('request');
const express = require('express');
const path = require('path');

const app = express();

// 代理配置
const proxyTable = {  
    '/api': {
        target: 'http://localhost/api' 
    }
};
app.use(function(req, res,next) {  
    const url = req.url;  
    if (req.method == 'OPTIONS') {      
      console.log('options_url: ', url); 
      
       //  设置cors 跨域
      // res.header("Access-Control-Allow-Origin", req.headers.origin || '*');
      // res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
      // res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");

      // 设置 cookie
      // res.header("Access-Control-Allow-Credentials", true);
      
      res.status(200).send('OK');     
      return;
    } 
    // console.log('req_url: ', url);
    next();
});

// 设置静态目录
app.use(express.static(path.join(__dirname, 'static')));

app.use('/', function(req, res) {  
      const url = req.url; 
      const proxy = Object.keys(proxyTable);  
      let not_found = true; 
      for (let index = 0; index < proxy.length; index++) {    
          const k = proxy[index];    
          const i = url.indexOf(k);   
          if (i >= 0) {     
              not_found = false;     
              const element = proxyTable[k];      
              const newUrl = element.target + url.slice(i+k.length);
              req.pipe(request({url: newUrl, timeout: 60000},(err)=>{
                  if(err){          
                      console.log('error_url: ', err.code,url);           
                      res.status(500).send('');
                  }     
              })).pipe(res);      
              break;
          } 
      }  
      if(not_found) {    
          console.log('not_found_url: ', url);
          res.status(404).send('Not found');
      } else {    
          console.log('proxy_url: ', url);
      }
});

// 监听端口      
const PORT = 8080;
app.listen(PORT, () => {  
    console.log('HTTP Server is running on: http://localhost:%s', PORT);
});

PS: 정적은 정적 페이지를 넣습니다

위 내용은 nodejs로 웹서버를 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제