nginx一直重定向到80,443以外的其他默认端口。在此处使用wordpress

时间:2018-11-11 06:06:28

标签: wordpress nginx certbot

我已按照步骤使用nginx配置SSL证书。但是,配置后,它将自动继续重定向到端口号8899,该端口号与http或https端口均无关。

当然,在使用certbot命令设置SSL证书并让certbot自动更新我的nginx .conf文件之前,我使用端口号8899来存储我的 wordpress 网站。当时,它确实仅在http中起作用。

certbot设置之后,我将nginx配置文件更改为仅在端口80、443上工作。但是,即使我仔细检查了在我的所有nginx conf文件中都没有使用端口8899, ,当我尝试通过端口80或443访问时,正在运行的nginx会一直重定向到端口8899。

我尝试重新启动nginx服务,然后重新启动计算机。这些尝试未能消除这种奇怪的症状。

如果有人能向我提出解决此问题的任何提示,我将不胜感激。

下面是我的Nginx配置文件。

/etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

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

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

/etc/nginx/sites-enabled/mysite.net

server {
    listen 80;
    listen [::]:80;

    # SSL configuration
    #
    #listen 443 ssl default_server;
    #listen [::]:443 ssl default_server;
    #
    # Note: You should disable gzip for SSL traffic.
    # See: https://bugs.debian.org/773332
    #
    # Read up on ssl_ciphers to ensure a secure configuration.
    # See: https://bugs.debian.org/765782
    #
    # Self signed certs generated by the ssl-cert package
    # Don't use them in a production server!
    #
    # include snippets/snakeoil.conf;

    root /home/ubuntu/data/wordpress/wordpress;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php;

    server_name mysite.net;

    client_max_body_size 50M;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        #try_files $uri $uri/ =404;
        index index.php;
    }

    # pass PHP scripts to FastCGI server
    #
    location ~ \.php$ {
        #include snippets/fastcgi-php.conf;

        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;

        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;


        # With php-cgi (or other tcp sockets):
        #fastcgi_pass 127.0.0.1:9000;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #   deny all;
    #}

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mysite.net/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mysite.net/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

更新

我发现由于某种原因,当我尝试使用443进行访问时,它将以301重定向到8899端口进行响应。

但是,除了从80-> 443之外,我的任何Nginx配置文件中都没有重定向命令。

这是我最新的mysite.net nginx conf文件

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl ;
    listen [::]:443 ssl ;


    # SSL configuration
    #
    #listen 443 ssl default_server;
    #listen [::]:443 ssl default_server;
    #
    # Note: You should disable gzip for SSL traffic.
    # See: https://bugs.debian.org/773332
    #
    # Read up on ssl_ciphers to ensure a secure configuration.
    # See: https://bugs.debian.org/765782
    #
    # Self signed certs generated by the ssl-cert package
    # Don't use them in a production server!
    #
    # include snippets/snakeoil.conf;

    server_name mysite.net;
    root /home/ubuntu/data/wordpress/wordpress;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php;



    client_max_body_size 50M;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.


        try_files $uri $uri/ =404;
        index index.php;
    }

    # pass PHP scripts to FastCGI server
    #
    location ~ \.php$ {
        #include snippets/fastcgi-php.conf;

        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;

        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;




        # With php-cgi (or other tcp sockets):
        #fastcgi_pass 127.0.0.1:9000;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #   deny all;
    #}

    #listen [::]:443 ssl ipv6only=on; # managed by Certbot
    #listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mysite.net/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mysite.net/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

1 个答案:

答案 0 :(得分:0)

为@ sipp11喝彩,他们会在评论中帮助我解决问题。

解决方案是仅更改wordpress mysql数据库中的siteurlhome网址。 Nginx配置与此问题无关。

nginx正常工作。重定向80-> 443,然后从443提供我的wordpress目录中的文件。

但是,由于wordpress一直以http://example.com:8899为起始网址,我想在处理php文件时,它会自动触发重定向到端口8899。

这说明了为什么只有将端口8899连接到nginx服务器指令时,整个wordpress才能工作。

首先将wordpress的http://example.com:8899设置为其siteurlhome的原因是因为我第一次尝试在8899端口下设置wordpress作为测试。那时我将默认端口从80更改为8899(因为apache2正在占用端口80,而nginx一直无法绑定到端口80)。