linux
  • Введение
  • Установка программ
  • Полезные команды
  • Telnet и Curl
  • Установка Android Studio
  • Установка Unity 3D
  • Шаблоны имени
  • Форматный выбор файлов
  • Навигация по каталогам
  • Операции над файлами
  • Работа с ссылками
  • AB тестирование
  • Справка о командах
  • Композиция команд
  • Процессы и память
  • Docker
  • Bash
  • Nginx
  • Загрузка файлов через scp
  • Открытие порта
  • Jenkins
  • Kafka
Powered by GitBook
On this page
  • Краткие сведения
  • Создание приложения NodeJS
  • Написание конфигурационного файла
  • Docker и Nginx

Was this helpful?

Nginx

Краткие сведения

Полезная ссылка

http://nginx.org/ru/docs/beginners_guide.html

Базовый URL

http://localhost:8080/

Перезапуск

sudo nginx -s reload

Папка с файлами

/usr/local/etc/nginx/

Работаем с файлом

nginx.conf

Создание приложения 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");

Запускаем приложение

npm start

Тестируем приложение.

Отправка 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

sudo nginx -s reload

Тестируем работу 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
PreviousBashNextЗагрузка файлов через scp

Last updated 5 years ago

Was this helpful?