Краткие сведения
Полезная ссылка
http://nginx.org/ru/docs/beginners_guide.html
Базовый URL
http://localhost:8080/
Перезапуск
Папка с файлами
/usr/local/etc/nginx/
Работаем с файлом
Создание приложения NodeJS
Напишем приложение для выполнения арифметических операций.
Приложение умеет принимать GET и POST запросы.
Приложение выставляет свои собственные заголовки.
Файл package.json
{
"name": "app_1",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.4"
}
}
Файл index.js
"use strict";
let express = require("express");
let app = express();
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Cache-Control", "no-cache, no-store, must-revalidate");
res.header("My-Header-First", "F-F-F");
res.header("My-Header-Second", "S-S-S");
res.header("My-Header-Third", "T-T-T");
next();
});
/*
*
* GET: curl -vv 'http://localhost:5020/api/get/sum?a=12&b=5'
*
*/
app.get('/api/get/sum', (request, response) => {
console.log("GET");
const dict = request.query;
const a = dict['a'];
const b = dict['b'];
const c = parseInt(a) + parseInt(b);
response.status(200);
response.end(c.toString());
});
/*
*
* POST: curl -d '{"a":4, "b":25}' -vv 'http://localhost:5020/api/post/mul'
*
*/
app.post('/api/post/mul', (request, response) => {
console.log("POST");
const buffer = [];
request.on('data', (data) => {
buffer.push(data);
}).on('end', () => {
let bodyString = buffer.join("");
let bodyObject = null;
try {
bodyObject = JSON.parse(bodyString);
} catch (err) {
bodyObject = null;
}
if(bodyObject === null) {
response.status(400);
response.end("");
} else {
const a = bodyObject.a;
const b = bodyObject.b;
const c = a * b;
response.status(200);
response.end(c.toString());
}
});
});
let port = 5020;
app.listen(port);
console.log("OK");
Запускаем приложение
Тестируем приложение.
Отправка GET запроса
curl -vv 'http://localhost:5020/api/get/sum?a=12&b=5'
Отправка POST запроса
curl -d '{"a":4, "b":25}' -vv 'http://localhost:5020/api/post/mul'
Написание конфигурационного файла
Открываем файл nginx.conf и пишем
events {
worker_connections 1024;
}
http {
server {
listen 5010;
location /project/app/find/sum {
proxy_pass http://localhost:5020/api/get/sum;
}
location /project/app/find/mul {
proxy_pass http://localhost:5020/api/post/mul;
}
}
}
Перезапускаем Nginx
Тестируем работу Nginx
Отправляем через Nginx запрос GET
curl -vv 'http://localhost:5010/project/app/find/sum?a=45&b=15'
Отправляем через Nginx запрос POST
curl -d '{"a":5, "b":45}' -vv 'http://localhost:5010/project/app/find/mul'
При этом все заголовки от сервера NodeJS успешно передаются клиенту.
Docker и Nginx
Ссылка на репозиторий
https://github.com/maxim218/Nginx_Docker_Apps_Test