আমি ট্রাফিককে কনফিগার করার চেষ্টা করছি যাতে আমার ডোমেন নামের মাধ্যমে পরিষেবাগুলিতে অ্যাক্সেস থাকতে পারে এবং আমাকে আলাদা আলাদা বন্দর নির্ধারণ করতে না হয়। উদাহরণস্বরূপ, দুটি মঙ্গোডিবি পরিষেবা, উভয়ই ডিফল্ট পোর্টে, তবে বিভিন্ন ডোমেনে example.localhost
এবং example2.localhost
। শুধুমাত্র এই উদাহরণ কাজ করে। মানে, অন্যান্য কেসগুলি সম্ভবত কাজ করে তবে আমি তাদের সাথে সংযোগ করতে পারি না এবং সমস্যাটি কী তা আমি বুঝতে পারি না। ট্রাফিকের সাথে এটি সম্ভবত কোনও সমস্যা নয়।
আমি কাজ করে এমন একটি উদাহরণ সহ একটি ভান্ডার তৈরি করেছি । আপনাকে কেবল এমকেসার্ট দিয়ে নিজের শংসাপত্র তৈরি করতে হবে । পৃষ্ঠায় ত্রুটিটি example.localhost
ফিরে আসে 403 Forbidden
তবে আপনার এটি নিয়ে চিন্তা করা উচিত নয়, কারণ এই কনফিগারেশনের উদ্দেশ্য হ'ল এসএসএল কাজ করছে তা দেখানো (প্যাডলক, সবুজ অবস্থা)। সুতরাং ফোকাস করবেন না 403
।
mongo
পরিষেবার সাথে কেবল SSL সংযোগ কাজ করে। আমি এটি রোবো 3 টি প্রোগ্রাম দিয়ে পরীক্ষা করেছি । এসএসএল সংযোগ নির্বাচন করার পরে, হোস্টটি প্রদান করা example.localhost
এবং স্ব-স্বাক্ষরিত (বা নিজস্ব) সংযোগের জন্য শংসাপত্র নির্বাচন করা। এবং এটি একমাত্র জিনিস যা সেভাবে কাজ করে। সংযোগ redis
( Redis ডেস্কটপ ম্যানেজার ) এবং pgsql
( PhpStorm , DBeaver , DbVisualizer ) কিনা আমি সার্টিফিকেট না প্রদান বা নির্বিশেষে কাজ করে না। আমি পরিষেবাগুলিতে এসএসএল ফরোয়ার্ড করি না, আমি কেবল ট্রাফিকের সাথে সংযুক্ত করি। আমি এটি উপর দীর্ঘ ঘন্টা ব্যয়। আমি ইন্টারনেট অনুসন্ধান করেছি। আমি এখনও উত্তর খুঁজে পাই না। কেউ কি এর সমাধান করেছেন?
পুনশ্চ. আমি লিনাক্স মিন্টে কাজ করি, সুতরাং আমার কনফিগারেশনটি কোনও সমস্যা ছাড়াই এই পরিবেশে কাজ করা উচিত। আমি লিনাক্সের জন্য সমাধান চাইব।
আপনি যদি সংগ্রহস্থলটি ব্রাউজ করতে না চান তবে আমি সর্বাধিক গুরুত্বপূর্ণ ফাইলগুলি সংযুক্ত করি:
Docker-compose.yml
version: "3.7"
services:
traefik:
image: traefik:v2.0
ports:
- 80:80
- 443:443
- 8080:8080
- 6379:6379
- 5432:5432
- 27017:27017
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./config.toml:/etc/traefik/traefik.config.toml:ro
- ./certs:/etc/certs:ro
command:
- --api.insecure
- --accesslog
- --log.level=INFO
- --entrypoints.http.address=:80
- --entrypoints.https.address=:443
- --entrypoints.traefik.address=:8080
- --entrypoints.mongo.address=:27017
- --entrypoints.postgres.address=:5432
- --entrypoints.redis.address=:6379
- --providers.file.filename=/etc/traefik/traefik.config.toml
- --providers.docker
- --providers.docker.exposedByDefault=false
- --providers.docker.useBindPortIP=false
apache:
image: php:7.2-apache
labels:
- traefik.enable=true
- traefik.http.routers.http-dev.entrypoints=http
- traefik.http.routers.http-dev.rule=Host(`example.localhost`)
- traefik.http.routers.https-dev.entrypoints=https
- traefik.http.routers.https-dev.rule=Host(`example.localhost`)
- traefik.http.routers.https-dev.tls=true
- traefik.http.services.dev.loadbalancer.server.port=80
pgsql:
image: postgres:10
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
labels:
- traefik.enable=true
- traefik.tcp.routers.pgsql.rule=HostSNI(`example.localhost`)
- traefik.tcp.routers.pgsql.tls=true
- traefik.tcp.routers.pgsql.service=pgsql
- traefik.tcp.routers.pgsql.entrypoints=postgres
- traefik.tcp.services.pgsql.loadbalancer.server.port=5432
mongo:
image: mongo:3
labels:
- traefik.enable=true
- traefik.tcp.routers.mongo.rule=HostSNI(`example.localhost`)
- traefik.tcp.routers.mongo.tls=true
- traefik.tcp.routers.mongo.service=mongo
- traefik.tcp.routers.mongo.entrypoints=mongo
- traefik.tcp.services.mongo.loadbalancer.server.port=27017
redis:
image: redis:3
labels:
- traefik.enable=true
- traefik.tcp.routers.redis.rule=HostSNI(`example.localhost`)
- traefik.tcp.routers.redis.tls=true
- traefik.tcp.routers.redis.service=redis
- traefik.tcp.routers.redis.entrypoints=redis
- traefik.tcp.services.redis.loadbalancer.server.port=6379
config.toml
[tls]
[[tls.certificates]]
certFile = "/etc/certs/example.localhost.pem"
keyFile = "/etc/certs/example.localhost-key.pem"
বিল্ড ও রান করুন
mkcert example.localhost # in ./certs/
docker-compose up -d
ধাপে ধাপে প্রস্তুত
- এমকিসার্ট ইনস্টল করুন (
mkcert -install
সিএ- তেও চালান ) - আমার কোডটি ক্লোন করুন
- ইন
certs
ফোল্ডারের রানmkcert example.localhost
- দ্বারা ধারক শুরু করুন
docker-compose up -d
- পৃষ্ঠা খুলুন https: //example.localhost/ এবং এটি নিরাপদ সংযোগ কিনা তা পরীক্ষা করুন
- যদি http: //example.localhost/ ঠিকানাটি পৌঁছানো যায় না, তবে যুক্ত
127.0.0.1 example.localhost
করুন/etc/hosts
শংশাপত্র:
- সার্বজনীন:
./certs/example.localhost.pem
- ব্যক্তিগত:
./certs/example.localhost-key.pem
- সিএ:
~/.local/share/mkcert/rootCA.pem
মঙ্গোডিবি পরীক্ষা করুন
- রোবো 3 টি ইনস্টল করুন
- নতুন সংযোগ তৈরি করুন:
- ঠিকানা:
example.localhost
- এসএসএল প্রোটোকল ব্যবহার করুন
- সিএ শংসাপত্র:
rootCA.pem
(বা স্ব-স্বাক্ষরিত শংসাপত্র)
- ঠিকানা:
- পরীক্ষার সরঞ্জাম:
টেস্ট রেডিস
- রেডিসডেস্কটপম্যানেজার ইনস্টল করুন
- নতুন সংযোগ তৈরি করুন:
- ঠিকানা:
example.localhost
- SSL এর
- সর্বজনীন কী:
example.localhost.pem
- ব্যক্তিগত কী:
example.localhost-key.pem
- কর্তৃপক্ষ:
rootCA.pem
- ঠিকানা:
- পরীক্ষার সরঞ্জাম:
যতদূর:
- আইপি (ট্রাফিক থেকে তথ্য) এর মাধ্যমে পোস্টগ্র্রেসে সংযুক্ত হতে পারে
jdbc:postgresql://172.21.0.4:5432/postgres?sslmode=disable
jdbc:postgresql://172.21.0.4:5432/postgres?sslfactory=org.postgresql.ssl.NonValidatingFactory
টেলিট চেষ্টা করুন (আইপি প্রতিটি ডকার পুনঃসূচনা পরিবর্তন করে):
> telnet 172.27.0.5 5432
Trying 172.27.0.5...
Connected to 172.27.0.5.
Escape character is '^]'.
^]
Connection closed by foreign host.
> telnet example.localhost 5432
Trying ::1...
Connected to example.localhost.
Escape character is '^]'.
^]
HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=utf-8
Connection: close
400 Bad RequestConnection closed by foreign host.
আমি যদি পোস্টগ্রিজের সাথে সরাসরি সংযোগ করি তবে ডেটাটি দুর্দান্ত। আমি যদি ট্রাফিকের মাধ্যমে সংযোগ স্থাপন করি তবে সংযোগটি বন্ধ করার সময় আমার কাছে খারাপ অনুরোধ রয়েছে। এর অর্থ কী এবং এর অবশ্যই কিছু অর্থ হওয়া উচিত কিনা আমার কোনও ধারণা নেই।
Connections to redis (Redis Desktop Manager) ... do not work
, তবে স্ক্রিনশট দেখায় Successful connection
-? আপনি কেন নিম্ন স্তরের সাথে পরীক্ষা করছেন না curl, openssl, telnet, ...
? netstat
যদি সেই অ্যাপ্লিকেশন পোর্টগুলি সত্যই 127.0.0.1
ইন্টারফেসে ট্রাফিকের জন্য আবদ্ধ হয় তবে আপনি কেন তা পরীক্ষা করছেন না ?
I can't connect to them
-> আপনি এটি কীভাবে পরীক্ষা করেছিলেন এবং ত্রুটিটি কী ছিল?