Debian

帶有 apache 和 nginx 的 ssl

  • February 6, 2021

我為靜態網站和電子郵件伺服器執行 nginx,為遠端 debian 10 伺服器上的 nextcloud 實例執行 apache2。

我想對兩者都使用 ssl。我已將 apache2 設置為偵聽埠 8443 而不是 443 用於 ssl 和 8080 而不是 80 用於 http。

certbot在兩台伺服器上都成功申請了。

但是,如果我現在訪問https://nextcloud.mydomain.com(apache 所在的位置),我仍然會收到“警告:潛在的安全風險”。使用該站點進行的測試顯示:我使用 nginx 執行的站點是證書有效的站點。我猜這是因為 https 前綴導致我的瀏覽器請求埠 443,而不是 8443。

我該如何解決這個問題?

相關文件內容:

/etc/nginx/sites-available/mysite:

server {

   root /path/to/website;

   index index.html index.htm ;

   server_name mydomain.com www.mydomain.com ;

   location / {
       proxy_pass http://localhost:8080;
       proxy_redirect off;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       try_files $uri $uri/ =404;
   }


   listen [::]:443 ssl ipv6only=on; # managed by Certbot
   listen 443 ssl; # managed by Certbot
   ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; # managed by Certbot
   ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; # managed by Certbot
   include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
   ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
   if ($host = www.mydomain.com) {
       return 301 https://$host$request_uri;
   } # managed by Certbot


   if ($host = mydomain.com) {
       return 301 https://$host$request_uri;
   } # managed by Certbot


   listen 80 ;
   listen [::]:80 ;

   server_name mydomain.com www.mydomain.com ;
   return 404; # managed by Certbot
}

/etc/apache2/ports.conf:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 8080

<IfModule ssl_module>
   Listen 9000
</IfModule>

<IfModule mod_gnutls.c>
   Listen 8443
</IfModule>

<IfModule mod_ssl.c>
   Listen 8443
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

我將上面的埠 ssl_module 更改為 9000,因為將它們全部設為 8443 會給我一個錯誤。

/etc/apache2/sites-available/000-default.conf和的開始/etc/apache2/sites-available/nextcloud.conf

<VirtualHost *:8080>
[...]

/etc/apache2/sites-available/default-ssl.conf和的開始/etc/apache2/sites-availble/nextcloud-le-ssl.conf

<IfModule mod_ssl.c>
   <VirtualHost *:8443>
[...]

所有 4 個文件在/etc/apache2/sites-enabled.

我改為遵循本指南,這對我解決問題很有幫助。

引用自:https://unix.stackexchange.com/questions/632919