บริบท
ฉันมีการตั้งค่าเซิร์ฟเวอร์ที่มีลักษณะดังนี้:
- เซิร์ฟเวอร์ Apache กำลังรับฟัง
ตัวอย่าง.คอม
;
- ท่าเรือสาธารณะ
80
ถูกเปลี่ยนเส้นทางไปที่ 443
;
- ท่าเรือสาธารณะ
443
ถูกส่งต่อไปยังโครงการ Symfony
- ในเครื่องเดียวกันมีเซิร์ฟเวอร์ API ภายในเครื่องที่เขียนด้วย Rust ซึ่งกำลังฟังอยู่
http://127.0.0.1:8030
(ไม่รองรับ SSL/TLS);
- API ภายในเครื่องสามารถตอบสนองข้อมูลที่ละเอียดอ่อนบางอย่าง เช่น โทเค็นการตรวจสอบสิทธิ์ JWT;
https://example.com/api
เป็นพร็อกซีไปยังเซิร์ฟเวอร์ API ภายในเครื่อง (พร็อกซีพาส
และ ProxyPassย้อนกลับ
,
ดูการกำหนดค่า Apache ด้านล่าง) เพื่อ:
- เปิดเผย API ต่อผู้ใช้ขั้นสุดท้าย พร้อมรองรับ SSL/TLS,
- และเพื่อให้สามารถส่งคำขอจาวาสคริปต์ XHR จากเว็บไซต์ Symfony สาธารณะได้
บันทึก: ฉันทำการตั้งค่านี้ด้วยพร็อกซีสำหรับ Local API เนื่องจากฉันมีปัญหามากมายเกี่ยวกับกฎ CORS; แต่
นี่คือ ไม่ เรื่องของคำถามของฉัน (ฉันเดาว่ามีการตั้งค่าที่ดีกว่ามาก)
คำถาม
การตั้งค่านี้ถือว่าปลอดภัยหรือไม่ หรือควรเพิ่มการรองรับ SSL/TLS สำหรับ API ภายในเครื่องเป็นจุดที่ดีหรือไม่
การกำหนดค่า Apache ง่ายขึ้นเล็กน้อย
<VirtualHost *:80>
ServerName example.com
Redirect / https://example.com
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
DirectoryIndex /index.php
ProxyPass /api http://127.0.0.1:8030/
ProxyPassReverse /api http://127.0.0.1:8030/
SSLEngine on
SSLProtocol -ALL +TLSv1.2 +TLSv1.3
SSLCompression off
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
DocumentRoot /var/www/html/symfony_project/public
<Directory /var/www/html/symfony_project/public>
AllowOverride All
Require all granted
Allow from All
FallbackResource /index.php
</Directory>
ErrorLog /var/log/apache2/symfony_project_error.log
CustomLog /var/log/apache2/symfony_project_access.log combined
</VirtualHost>