Rumah > Soal Jawab > teks badan
Bantuan. . Sekiranya terdapat tutorial yang ditulis oleh Dalao, anda juga boleh menyiarkan pautan ke artikel tersebut. . Selepas pusingan Baidu, saya koma. .
習慣沉默2017-06-20 10:07:52
折腾了一个下午,找到了docker的解决方案
github:https://github.com/JrCs/docke...
把重要重点部分摘出来
proksi nginx juga boleh dijalankan sebagai dua bekas berasingan menggunakan imej jwilder/docker-gen
dan imej nginx rasmi.
Anda mungkin mahu melakukan ini untuk mengelakkan soket docker terikat pada perkhidmatan kontena yang terdedah kepada umum (elakkan daripada memasang soket docker dalam bekas terdedah nginx). Ia lebih baik dari sudut keselamatan.
Untuk menjalankan proksi nginx sebagai bekas berasingan anda perlukan:
1) Untuk melekapkan fail templat nginx.tmpl ke dalam bekas docker-gen. Anda boleh mendapatkan nginx.tmpl rasmi terkini dengan arahan seperti:
curl https://raw.githubusercontent.com/jwilder/nginx-proxy/master/nginx.tmpl > /path/to/nginx.tmpl
2) Tetapkan NGINX_DOCKER_GEN_CONTAINER
pembolehubah persekitaran kepada nama atau id bekas docker-gen.
Contoh:
Mulakan pertama nginx (imej rasmi) dengan jilid:
$ docker run -d -p 80:80 -p 443:443 \
--name nginx \
-v /etc/nginx/conf.d \
-v /etc/nginx/vhost.d \
-v /usr/share/nginx/html \
-v /path/to/certs:/etc/nginx/certs:ro \
--label com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true \
nginx
Mulakan bekas gen docker dengan volum kongsi dan fail templat:
$ docker run -d \
--name nginx-gen \
--volumes-from nginx \
-v /path/to/nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro \
-v /var/run/docker.sock:/tmp/docker.sock:ro \
jwilder/docker-gen \
-notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
Kemudian mulakan bekas ini (pembolehubah NGINX_DOCKER_GEN_CONTAINER mesti mengandungi nama atau id kontena docker-gen):
$ docker run -d \
--name nginx-letsencrypt \
-e "NGINX_DOCKER_GEN_CONTAINER=nginx-gen" \
--volumes-from nginx \
-v /path/to/certs:/etc/nginx/certs:rw \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
jrcs/letsencrypt-nginx-proxy-companion
Kemudian mulakan mana-mana bekas untuk diproksikan seperti yang diterangkan sebelum ini.
Jika atas sebab tertentu anda tidak boleh menggunakan pilihan docker --volumes-from, anda boleh menentukan nama atau id bekas nginx dengan pembolehubah NGINX_PROXY_CONTAINER
.
Untuk menggunakan perkhidmatan Let's Encrypt untuk mencipta sijil yang sah secara automatik untuk hos maya.
Tetapkan pembolehubah persekitaran berikut untuk membolehkan sokongan Let's Encrypt untuk bekas yang diproksikan. Pembolehubah persekitaran ini perlu diisytiharkan dalam setiap bekas aplikasi yang akan diproksikan.
LETSENCRYPT_HOST
LETSENCRYPT_EMAIL
Pembolehubah LETSENCRYPT_HOST
variable most likely needs to be the same as the VIRTUAL_HOST
berkemungkinan besar perlu sama dengan pembolehubah VIRTUAL_HOST
dan mestilah domain yang boleh dicapai secara umum. Tentukan berbilang hos dengan pembatas koma.
Pembolehubah persekitaran berikut adalah pilihan dan parameterkan cara klien Let's Encrypt berfungsi.
LETSENCRYPT_KEYSIZE
Pembolehubah LETSENCRYPT_KEYSIZE
menentukan saiz kunci yang diminta (dalam bit, lalai kepada 4096).
Jika anda ingin mencipta sijil berbilang domain (SAN) tambahkan domain asas sebagai domain pertama bagi LETSENCRYPT_HOST
pembolehubah persekitaran.
Jika anda ingin mencipta sijil ujian yang tidak mempunyai had 5 sijil/minggu/domain tentukan LETSENCRYPT_TEST
environment variable with a value of true
(dalam bekas yang anda meminta sijil dengan LETSENCRYPT_HOST). Jika anda ingin melakukan ini secara global untuk semua bekas, tetapkan ACME_CA_URI seperti yang diterangkan di bawah.
Setiap jam (3600 saat) sijil disemak dan setiap sijil yang akan tamat tempoh dalam 30 hari akan datang (90 hari / 3) diperbaharui.
$ docker run -d \
--name example-app \
-e "VIRTUAL_HOST=example.com,www.example.com,mail.example.com" \
-e "LETSENCRYPT_HOST=example.com,www.example.com,mail.example.com" \
-e "LETSENCRYPT_EMAIL=foo@bar.com" \
tutum/apache-php
Pilihan pembolehubah persekitaran bekas letsencrypt-nginx-proxy-companion untuk konfigurasi tersuai.
ACME_CA_URI
- Directory URI for the CA ACME API endpoint (default: https://acme-v01.api.letsencrypt.org/directory
). If you set it's value to https://acme-staging.api.letsencrypt.org/directory
letsencrypt akan menggunakan pelayan ujian yang tidak mempunyai had 5 sijil/minggu/domain. Anda juga boleh membuat sijil ujian setiap bekas (lihat mari menyulitkan sijil ujian)
Sebagai contoh
$ docker run -d \
-e "ACME_CA_URI=https://acme-staging.api.letsencrypt.org/directory" \
-v /path/to/certs:/etc/nginx/certs:rw \
--volumes-from nginx-proxy \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
jrcs/letsencrypt-nginx-proxy-companion
DEBUG
- Set it to true
untuk mendayakan penyahpepijatan skrip titik masuk dan penjanaan sijil LetsEncrypt, yang boleh membantu anda menetapkan sebarang isu konfigurasi.
Label "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true" - tetapkan label ini pada bekas nginx-proxy untuk memberitahu bekas docker-letsencrypt-nginx-proxy-companion untuk menggunakannya sebagai proksi.
ACME_TOS_HASH
- Mari anda hantar cincang TOS alternatif kepada simp_le, untuk menyokong pelaksanaan ACME CA yang lain.
Jika anda mahu contoh lain cara menggunakan bekas ini, lihat:
Contoh Karl Fathi
Lagi contoh dari Karl
Contoh George Ilyes
Contoh karang docker yang mudah Dmitry
注意,这里有个坑,也怪我自己没看清楚,如果镜像已经expose端口就设置VIRTUAL_HOSTCRYTTY_HOSTCRYPTUAL_HOSTCRY行,如果没有就得在设置好三个环境变量之后自己加入--expose 容器内应用服务端口 参数启动。如果容器是discourse这样的,就得在app.yml内设置好环境变量之后把端:后把端后把端后占用端口:80,然后再保存重建启动。
大家讲道理2017-06-20 10:07:52
Memandangkan kontena hanya boleh mengikat port hos secara langsung, contohnya, saya mempunyai 10 kontena web, maka kontena ini semuanya memerlukan 80 atau 443, jadi parameter -p tidak boleh dilaksanakan, jadi sama ada gunakan bekas sebagai laluan terbalik bekas proksi, Gunakan nginx, bekas nginx untuk -p, dan bekas web lain seperti php-fpm dan node Akses melalui nginx sebagai proksi terbalik Sijil juga diserahkan terus kepada pelayan nginx dan penghantaran 443 boleh dicapai.
Sebenarnya, ini adalah asas, tetapi ia tiada kaitan dengan buruh pelabuhan
Artikel ini adalah persekitaran lnmp,
/a/11...
Jika terdapat berbilang perkhidmatan php-fpm atau nod atau python backend, maka nginx hendaklah seperti berikut
server{
listen 80;
server_name web1;
location /{
proxy_pass ....
}
}
server{
listen 80;
server_name web2;
location /{
proxy_pass ....
}
}
server{
listen 80;
server_name web3;
location /{
proxy_pass ....
}
}