设置端口 443 ssl;加载不同的服务器目录?

设置端口 443 ssl;加载不同的服务器目录?

运行 Nginx + Centos 7.2 + Wordpress

我正在为我的一个域名安装 SSL,当我在服务器配置中设置端口时,listen 443 ssl;当我访问该域名时,它会提示我“欢迎使用 nginx”

在此处输入图片描述

但如果我将其改回,listen 80;它将显示我的网站。

这是我的服务器域配置:

server{
    listen 443 ssl;
    server_name  domain.com www.domain.com;
    root   /var/www/data/domain.com/public_html/;
    index index.php index.html index.htm;
    client_max_body_size 500M;
    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/domain.key;
    ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root   /var/www/data/domain.com/public_html/;
    }

    location ~ \.php$ {
        try_files $uri $uri/ /index.php?q=$uri&$args;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

这是我的 nginx.conf:

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

}

我花了 4 天时间尝试让 SSL 正常工作,但是,我不太走运。

另外,当我添加return 301 https://$host$request_uri;到我的域配置时,我只收到“重定向太多”错误。

编辑:

因此,正如您在底部的 nginx.conf 中看到的那样,它包含了/etc/nginx/conf.d/*因此出于某种原因它读取我的域配置,并跳过该操作并从“/etc/nginx/conf.d/*”处理 default.conf。

好吧,我仍然在思考我还能做些什么不同的事情。

答案1

好吧,Alexey Ten 在他的评论中给出了答案:如果你在调用你的网站时没有明确使用 https(“https://www.domain.com“) 您的服务器通过端口 80 进行寻址,如果不重定向,则监听 443 的服务器将不会提供任何服务。

你把重定向指令放在哪里了?你必须把它写入另一个服务器块,如下所示:

    server {
            listen 80;
            return 301 https://$host$request_uri;
    }

这会将所有内容重定向到 https。如果您只希望将对 domain.com 的请求重定向到 https,则可以向该块添加服务器名称指令(“server_name domain.com www.domain.com;”)。

相关内容