Nginx 配置错误?

Nginx 配置错误?

当我浏览我的 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 安装插件来获取证书,它将自动配置所有内容。如果您“手动”获取证书,您也必须手动添加这些配置选项。

相关内容