Nginx配置https和域名轉發
阿新 • • 發佈:2022-05-17
在我的Docker內網中,有一個服務:http://172.18.0.3:9000,我如何才能在公網上通過域名訪問到這個服務呢?Nginx可以幫我做。
直接貼配置:
server { listen 80; server_name xxx.xxxx.com; rewrite ^(.*)$ https://$host$1 permanent; } server { listen 443 ssl; server_name xxx.xxxx.com; ssl_certificate /etc/nginx/conf.d/cert/portainer.goodboytxb.com/cert1.pem; ssl_certificate_key /etc/nginx/conf.d/cert/portainer.goodboytxb.com/privkey1.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #協議配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#套件配置 ssl_prefer_server_ciphers on; location / { proxy_pass http://172.18.0.3:9000; } }
-
server_name xxx.xxxx.com; :是監聽的解析到當前伺服器的域名,一般單獨的一個服務用一個子域名去對映,這裡需要在域名的DNS管理中新增一個xxx的子域名解析的A記錄。
-
rewrite ^(.*)$ https://$host$1 permanent; :這一句是80埠下的請求統一重寫為https,即將http的請求強制轉換成https
-
ssl_certificate /etc/nginx/conf.d/cert/portainer.goodboytxb.com/cert1.pem; ssl_certificate_key /etc/nginx/conf.d/cert/portainer.goodboytxb.com/privkey1.pem; # 這兩句的是指定https的證書和私鑰的位置,https必須需要證書
-
location / { proxy_pass http://172.18.0.3:9000; } #通過443埠的流量統一轉發到 http://172.18.0.3:9000;
此時通過 xxx.xxxx.com 就可以對應的訪問到 http://172.18.0.3:9000
配置檔案 xxx.xxxx.com.conf 需要放到nginx的conf.d資料夾下,conf.d是Nginx的預設配置資料夾,這個目錄是在Nginx.conf中配置的。
http://172.18.0.3:9000是docker中的內網ip,這裡也可以用容器名的方式訪問,比如容器名是portainer,配置成http://portainer:9000也是可以訪問到的。