
рдЬрдм рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рдЗрдЯреЗрдВ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрди рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╕рд╡рд╛рд▓ рдпрд╣ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЕрдзрд┐рдХ рднреБрдЧрддрд╛рди рди рдХрд░реЗрдВ рдФрд░ рд╕рдм рдХреБрдЫ рд╕рдмрд╕реЗ рдЖрдХрд░реНрд╖рдХ рд╕реЗрд╡рд╛ рдХреА рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдореЗрдВ рдкреИрдХ рдХрд░реЗрдВ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХрд┐рд╕реА рджрд┐рди рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╡рд┐рддрд░рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдмрдврд╝реЗрдВрдЧреЗ - рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП рдПрдХ рдЕрдзрд┐рднрд╛рд░ рдмреАрдЬ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдЕрднреА рдЕрдкрдиреЗ рд╢рд┐рд▓реНрдк рдореЗрдВ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рднрд░реЗ рдХрджрдо рдЙрдард╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕реЗ рдЖрдк рдкреВрд░реЗ рд╡рд░реНрддрдорд╛рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдпрд╣ рдбреЙрдХрдЯрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ
- рдирдЧреАрдиреЗрдХреНрд╕ рдХрдВрдЯреЗрдирд░ рдЬреЛ рдмрд╛рд╣рд░ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдореАрдк рдХрд░рддрд╛ рд╣реИ
- рдХрдИ, рд╣рдорд╛рд░реЗ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдХреНрд░рдорд╢рдГ, рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИрдВ
- рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрди
рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
sudo apt update sudo apt install docker.io mkdir /home/$USER/app
рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ
рдореИрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмреНрд▓реЙрдЯ рдЬреЛрдбрд╝реВрдВрдЧрд╛, рдЬреЛ рдЕрднреА рднреА рдбреЙрдХрдЯрд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдмрд╛рд╣рд░реА рд╡рд╛рддрд╛рд╡рд░рдг рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд┐рдирд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрд╣реБрдд рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рдХреЗрд╡рд▓ рдХреЙрдЧреНрдиреЗрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╕рдореАрдк рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рдПрдЧреАред рдЖрдк рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрд╕реНрдЯ рднреА рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдорд╛рд░рд┐рдпрд╛рдбреАрдмреА рдпрд╛ рдореЛрдВрдЧреЛ рдХреЗ рд╕рд╛рде рдФрд░ рд╕реНрдерд╛рдиреАрдп рдЖрдИрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╣рд▓рд╛ ssl рдХрдиреЗрдХреНрдЯреЗрдб рдиреЛрдбрдЬ рдХреЗ рд╕рд╛рде рд╣реЛрдЧрд╛
mkdir /home/$USER/app/web-one.oyeooo.com mkdir /home/$USER/app/web-one.oyeooo.com/ssl nano /home/$USER/app/web-one.oyeooo.com/index.js nano /home/$USER/app/web-one.oyeooo.com/package.json
index.js const fs = require("fs"), https = require("https"), express = require("express"), app = express(), port = 443 let options = { key: fs.readFileSync("ssl/web-one.oyeooo.com.key"), cert: fs.readFileSync("ssl/web-one.oyeooo.com.crt") } https.createServer(options, app).listen(port, function(){ console.log("Express server listening on port " + port); }) app.get("/", function (req, res) { res.writeHead(200) res.end("Oyeooo") })
package.json { "name": "oyeooo", "version": "1.0.0", "description": "", "main": "index.js", "directories": { "lib": "lib" }, "scripts": { "start": "node index.js" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.17.1" } }
рд╣рдо SLL рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ /home/app/web-one.oyeooo.com/ssl
рджреВрд╕рд░рд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрдкрд╛рдЪреЗ рд╕реНрдереИрддрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛрдЧрд╛
mkdir /home/$USER/app/web-two.oyeooo.com nano /home/$USER/app/web-two.oyeooo.com/index.html
index.html <!DOCTYPE html> <html> <head> <title>Welcome to me!</title> </head> <body> <h1>Oyeooo!</h1> <p><em>Thank you for using habr.</em></p> </body> </html>
рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдПрдБ
docker network create --subnet=172.18.0.0/24 oyeooo
рдЕрдм рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдПрдВ
sudo docker run --net oyeooo --ip 172.18.0.2 --name web-one -v /home/$USER/app/web-one.oyeooo.com:/home/app -it node bash cd /home/app npm i npm start
ctrl + q + p
sudo docker run --net oyeooo --ip 172.18.0.3 --name web-two -d -v /home/$USER/app/web-two.oyeooo.com:/usr/local/apache2/htdocs httpd
ctrl + q + p
рдирд┐рдЧреНрдиреЗрдХреНрд╕-рдкреНрд░реЙрдХреНрд╕реА рдкрд░ рдЬрд╛рдПрдВ
mkdir /home/$USER/app/nginx mkdir /home/$USER/app/nginx/conf mkdir /home/$USER/app/nginx/ssl mkdir /home/$USER/app/nginx/logs mkdir /home/$USER/app/nginx/logs/web-one.oyeooo.com mkdir /home/$USER/app/nginx/logs/web-two.oyeooo.com nano /home/$USER/app/nginx/conf/web-one.oyeooo.com.conf nano /home/$USER/app/nginx/conf/web-two.oyeooo.com.conf
рд╡реЗрдм one.oyeooo.com.conf server { listen 80; server_name web-one.oyeooo.com; access_log /var/log/nginx/web-one.oyeooo.com/http-access.log; error_log /var/log/nginx/web-one.oyeooo.com/http-error.log; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name web-one.oyeooo.com; access_log /var/log/nginx/web-one.oyeooo.com/https-access.log; error_log /var/log/nginx/web-one.oyeooo.com/https-error.log; ssl_certificate /etc/nginx/ssl/web-one.oyeooo.com/web-one.oyeooo.com.crt; ssl_certificate_key /etc/nginx/ssl/web-one.oyeooo.com/web-one.oyeooo.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location / { proxy_pass https://172.18.0.2/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; client_max_body_size 512M; } }
рд╡реЗрдм two.oyeooo.com.conf server { listen 80; server_name web-two.oyeooo.com; access_log /var/log/nginx/web-two.oyeooo.com/http-access.log; error_log /var/log/nginx/web-two.oyeooo.com/http-error.log; location / { proxy_pass http://172.18.0.3/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; client_max_body_size 512M; } }
рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ:
sudo docker run --net oyeooo --ip 172.18.0.4 --name nginx -it -v /home/$USER/app/nginx/logs:/var/log/nginx -v /home/$USER/app/nginx/ssl:/etc/nginx/ssl -v /home/$USER/app/nginx/conf:/etc/nginx/conf.d -p 80:80 -p 443:443 nginx bash
рдкрд░реНрдпрд╛рд╡рд░рдг рддреИрдирд╛рдд рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!
рдЖрдк рд╣рдорд╛рд░реЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдЧреЛрдкрдиреАрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдирд┐рдпрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдмрдирд╛рдПрдБ рдпрд╛ рд╣рдЯрд╛рдПрдВ рдФрд░ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ:
sudo docker exec -it nginx nginx -s reload ... crm, , gui , . .