我在linode上运行一个rails应用程序。我在ubuntu上使用nginx,并且成功地为两个域(www和非www)创建了一个certbot证书
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: example.com
Domains: www.example.com
Expiry Date: 2020-02-19 20:17:51+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
Certificate Name: www.example.com
Domains: example.com
Expiry Date: 2020-02-20 07:33:06+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/www.example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/www.example.com/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
这是我启用的nginx配置文件的内容
upstream puma {
server unix:///home/deploy/apps/example/shared/tmp/sockets/example-puma.sock;
}
server {
listen 80 default_server deferred;
# server_name example.com;
root /home/deploy/apps/example/current/public;
access_log /home/deploy/apps/example/current/log/nginx.access.log;
error_log /home/deploy/apps/example/current/log/nginx.error.log info;
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @puma;
location @puma {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://puma;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 10M;
keepalive_timeout 10;
}
server {
listen 80;
# server_name example.com;
server_name 172.104.228.105;
return 301 $scheme://example.com$request_uri;
}
我想将所有流量重定向到https://heimlichhamburg.dehttps://non-www.com.
在我为非www域添加另一个证书之前,该证书一直适用于www。现在我在www中收到一个重定向您太多次
错误,并且此站点无法在非www域上提供安全连接
。
更新NGINX.CONF
upstream puma {
server unix:///home/deploy/apps/wasgehthamburg/shared/tmp/sockets/wasgehthamburg-puma.sock;
}
server {
listen 80 default_server deferred;
# server_name example.com;
root /home/deploy/apps/wasgehthamburg/current/public;
access_log /home/deploy/apps/wasgehthamburg/current/log/nginx.access.log;
error_log /home/deploy/apps/wasgehthamburg/current/log/nginx.error.log info;
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @puma;
location @puma {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://puma;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 10M;
keepalive_timeout 10;
}
server {
listen 80;
# server_name example.com;
server_name 172.XXX.XXX.105 www.example.org example.org;
return 301 https://example.org.de$request_uri;
}
server {
listen 443 ssl http2; #https of www*, 301 to right domain.
server_name www.heimlichhamburg.de;
#here the paths to your cert and key
ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem
ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
return 301 https://example.org$request_uri;
}
server {
listen 443 ssl http2;
server_name example.org;
ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem
ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
#do what you want to do here.
}
首先,您可以将所有网址发送到https,无论是使用w还是没有它。
server {
listen 80;
server_name example.org www.example.org;
return 301 https://example.org$request_uri;
}
如果主机是www*并且通过https,则重定向到不带www的https。顺便说一下,在这里你将使用www.example.com证书
server {
listen 443 ssl http2; #https of www*, 301 to right domain.
server_name www.example.org;
#here the paths to your cert and key
ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem
ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
return 301 https://example.org$request_uri;
}
最后,如果它带有正确的方案,并且具有正确的主机,请做任何您想做的事情。
server {
listen 443 ssl http2;
server_name example.org;
ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem
ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
#do what you want to do here.
}
我发现你遇到的一个问题是,在example.com的80端口上,你重定向到scheme:/...,这意味着使用相同的方案到达,所以它是http不断(重定向循环)。
如果你有任何问题,就问他们: D
好吧,我恨死它了。我已经想解决这个问题几个小时了,但我还是不知道是不是错了,或者我错过了什么。 我有这个代码: 它会将http请求重定向到https,但每当我键入domain.com时,它都会重定向到https://domain.com,并抛出一个ssl错误: 这可能不是你要找的网站!您试图访问域。但实际上您到达了一个服务器,该服务器的名称为www.domain.com。这可能是由于服务器配置错误
问题内容: 我想使用PHP将所有www.domain.com请求重定向到domain.com,基本上是: 但是我确实想像SO中那样维护请求的URL,例如: 应该重定向到: 我不想依靠解决方案,并且我不确定要使用哪种变体来实现这一目标。同样,保留HTTPS协议将是一个加号。 我应该怎么做? 问题答案: 将用户重定向到完全相同的页面,www。完整。 因此,要摆脱www。,我们只需替换一行: 那应该起作
问题内容: 是否有可能以某种方式将www重定向到node.js中的非www URL?由于节点Web服务器中没有htaccess,我很好奇该怎么做。 问题答案: 你在用快递吧?如果是这样,则可以使所有GET请求都通过的路由处理程序,检查它们是否为“ www” URL,并在适当时重定向到适当的非www URL。
我有这个在我的. htaccess文件: 但是每当我访问根目录上的文件时,就像它将重定向到。 我如何纠正它,以便它将正确地重定向到?
我在PHP上有一个自定义的非CMS站点。 我现在的生活方式。htaccess设置允许我使用不带“.php”部分的URL,并将所有非www请求重定向到www: 现在我们切换到HTTPS。 如何在中从到获得适当的SEO友好重定向。htaccess? 我试着用一根线代替第三根线 但它不起作用... 另外,有没有办法为. php请求设置301重定向以重定向到non-. php变体?虽然它看起来像是指重定向
我的一个域也有类似的问题。我为裸域和www域都安装了SSL证书。 现在,然而我想把裸体http://domain.com和https://domain.com都重定向到https://www.domain.com. 我在我的.htaccess中有这个规则,但当您使用https://domain.com,但是,当访问时http://domain.com,它重定向到http://www.domain.