【问题标题】:nginx redirecting issue "w2.valleymedtrans.com redirected you too many times"nginx 重定向问题“w2.valleymedtrans.com 重定向你太多次”
【发布时间】:2020-10-21 13:25:17
【问题描述】:

我想将 apache VHost 转换为 Nginx vhost。 这是我的 Apache Vhost,工作正常。

<VirtualHost *:80>
  ServerName    w2.valleymedtrans.com
  ServerAdmin   "a.talib@valleymedtrans.com"

  DocumentRoot /var/www/html/website/valleymedtrans.com/website2019
<Directory /var/www/html/website/valleymedtrans.com/website2019>
       AllowOverride All
        Require all granted
        DirectoryIndex index.php
</Directory>
  CustomLog /var/log/httpd/access.log combined
  ErrorLog /var/log/httpd/error.log
RewriteEngine on
RewriteCond %{SERVER_NAME} =w2.valleymedtrans.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

我想转换成 Nginx,但收到错误 w2.valleymedtrans.com 将您重定向了太多次。 我的 Nginx 虚拟主机

server {
        listen 80;
        listen [::]:80;
        server_name w2.valleymedtrans.com www.w2.valleymedtrans.com;
        root /var/www/html/valleymedtrans.com/website2019;
        index index.html;
        return 301 https://w2.valleymedtrans.com$request_uri;
        error_log  /var/log/nginx/error_log warn;
        access_log  /var/log/nginx/access.log combined ;
        
        location / {
                
                try_files $uri $uri/ /index.php?$args;

        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
                include fastcgi_params;
        }
      
    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/w2.valleymedtrans.com-0001/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/w2.valleymedtrans.com-0001/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

}

请帮我解决重定向问题。

【问题讨论】:

    标签: php apache nginx nginx-config


    【解决方案1】:

    试试

    server {
        listen 80;
        listen [::]:80;
        server_name w2.valleymedtrans.com;
        return 301 https://w2.valleymedtrans.com$request_uri;
    }
    
    server {
        listen [::]:443 ssl; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/w2.valleymedtrans.com-0001/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/w2.valleymedtrans.com-0001/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
    
        server_name w2.valleymedtrans.com;
        root /var/www/html/valleymedtrans.com/website2019;
        index index.php index.html;
        error_log  /var/log/nginx/error_log warn;
        access_log  /var/log/nginx/access.log combined ;
            
        location / {
            try_files $uri $uri/ /index.php$is_args$args;
        }
    
        location ~ \.php$ {
            include fastcgi_params;
            include snippets/fastcgi-php.conf;
    
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
    }
    

    【讨论】:

    • 使用后得到“404 Not Found”
    • @MSalahuddin 对不起,我的错字,不是server_name www.w2.valleymedtrans.com;,而是第二个server 块中的server_name w2.valleymedtrans.com;。请尝试正确的答案。
    【解决方案2】:

    您的 nginx 配置文件看起来不错。但我不知道您是否可以在一个配置文件中处理多个侦听器。

    最好有一个配置文件用于监听 80 端口和一个配置文件用于监听端口 443。由于您在此文件中没有物理分隔,因此 return 301 https://w2.valleymedtrans.com$request_uri; 行也可以由端口的侦听器解释443,这可能会导致重定向循环。

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      相关资源
      最近更新 更多