当我浏览我的 wordpress 网站时,它会自动重定向到 https。
然而,我得到了一个很长的 TTFB,我相信这可能是由于基本配置错误造成的。
目前我有以下配置,(HTTPS 仍然以某种方式工作,我不明白)
server {
listen 8080 ;
listen [::]:8080 ;
port_in_redirect off;
absolute_redirect off;
...
如果我进行以下更新
server {
listen 443 ssl;
listen [::]:443 ssl ;
port_in_redirect off;
absolute_redirect off;
该网站已无法访问。
当服务器监听 8080 时,SSL 如何工作?我的配置中没有任何 301
编辑:完整配置-下面的版本以某种方式将所有流量正确重定向到 https://
server {
listen 8080 ;
listen [::]:8080 ;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
large_client_header_buffers 4 64k;
proxy_max_temp_file_size 0;
root /home/site/wwwroot;
index index.php index.html index.htm;
server_name domain.co.uk www.domain.co.uk;
access_log off;
error_log off;
port_in_redirect off;
absolute_redirect off;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /html/;
}
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types image/svg+xml image/x-icon text/plain text/html text/xml text/css text/javascript application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript application/x-font-ttf application/vnd.ms-fontobject font/opentype font/ttf font/eot font/otf image/vnd.microsoft.icon;
location ~* \.(eot|ttf|woff|woff2|webmanifest)$ {
add_header Access-Control-Allow-Origin *;
}
location ~* \.(css|js|ico|gif|jpeg|jpg|webp|png|svg|eot|otf|woff|woff2|ttf|ogg)$ {
expires max;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param HTTP_PROXY "";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param QUERY_STRING $query_string;
fastcgi_intercept_errors on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 3600;
fastcgi_read_timeout 3600;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
答案1
在港口8080
它正在工作不使用 SSLlisten 8080
,纯文本形式。要添加 SSL,仅仅更改为是不够的listen 443 ssl
。您至少还需要添加指定证书链和服务器私钥的行:
listen [::]:443 ssl;
listen 443 ssl;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
完整链是所有 PEM 格式证书的简单连接(即内部包含 Base64 编码数据的文本文件),第一个证书是您的服务器对应的私钥,然后是其直接颁发者 CA,依此类推,直到但不包括根 CA。
如果证书中有多个名称(现代证书始终使用subjectAlternativeNames
允许指定多个域名的名称),则由您在选项中指定它们server_name
。您只能指定证书的 SAN 字段中存在的服务器名称,但不需要全部使用它们。(如果您指定除 SAN 字段中存在的名称以外的任何名称,则您的客户端在使用该名称访问您的服务器时将显示 SSL 证书错误,提示它不属于域。)对于您来说,证书必须至少对和都domain.co.uk
有效www.domain.co.uk
。
看Nginx HTTPS 手册有关详细信息。如果您使用certbot
(ACME 客户端)和 nginx 安装插件来获取证书,它将自动配置所有内容。如果您“手动”获取证书,您也必须手动添加这些配置选项。