我使用Nginx作为Rstudio服务器和Shiny服务器的反向代理,用于保护与这些服务的连接。 我正在使用Letencrypt免费签名的证书。
我有这个条目让letsencrypt来validation我是谁我说我是谁。
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; # Make site accessible from http://localhost/ server_name mydomain.com; location ~ /.well-known { allow all; } }
我还有另一台server来侦听443和proxy_redirect到我的服务器。 一切工作正常。 我想要做的是类似的东西
server { listen 80; return 301 https://$host$request_uri; }
但我认为这将打破letsencrypt,所以我怎么有以上没有打破letsencryptvalidation?
我的工作configuration是:
server { listen 80; listen [::]:80; server_name example.com www.example.com; root /srv/www/empty; include includes/letsencrypt; location / { return 301 https://www.example.com$request_uri; } }
其中/etc/nginx/includes/letsencrypt是Ansiblepipe理的,包含:
location /.well-known/acme-challenge/ { try_files $uri =404; }
/srv/www/empty是一个空的目录,只有当使用Let's Encrypt发出挑战(使用--webroot )时,它才包含文件。
让我们encryption然后运行:
letsencrypt certonly --webroot -w /srv/www/empty -d example.com -d www.example.com