Простой proxy-сервер на iojs
Для нужд разработки возникла необходимость в proxy-овании некоторых запросов, в обход CORS-а. Погуглив и слегка причесав код, получилось следующее:
"use strict";
/**
* run: iojs --harmony_arrow_functions proxy.js
*
* nginx:
* location ~ ^/api.*$ {
* proxy_pass http://127.0.0.1:3001;
* proxy_set_header X-Real-IP $remote_addr;
* proxy_set_header Host $host;
* proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
* }
*/
let hostname = '%hostname%';
let port = 3001;
let auth = '%user%:%pass%';
let http = require('http');
http.createServer((clientReq, clientRes) =>
{
let opts =
{
hostname: hostname,
port: 80,
path: clientReq.url,
auth: auth,
headers: clientReq.headers,
method: clientReq.method
};
opts.headers.host = hostname;
console.info('serve: %s %s', clientReq.method, clientReq.url);
let proxy = http.request(opts, (proxyRes) =>
{
proxyRes.addListener('data', (chunk) => clientRes.write(chunk, 'binary'));
proxyRes.addListener('end', () => clientRes.end());
clientRes.writeHead(proxyRes.statusCode, proxyRes.headers);
});
clientReq.addListener('data', (chunk) => proxy.write(chunk, 'binary'));
clientReq.addListener('end', () => proxy.end());
}).listen(port);
Запускается путём выполнения iojs --harmony_arrow_functions proxy.js, логирует все запросы в консоль. Точно умеет POST, GET, отдавать статику… Для простых нужд вполне сгодится. Жаль браузеры пока толком не умеют arrow functions :(
Комментарии
Оставить комментарий
modules/comment
window._Comment_content_article_112 = new classes.Comment( '#comment_block_content_article_112',
{
type: 'content_article',
node_id: '112',
user: 1,
user_id: 0,
admin: 0,
view_time: null,
msg: {
empty: 'Комментарий пуст',
ask_link: 'Ссылка:',
ask_img: 'Ссылка на изображение:' }
});