我试图将我的Laravel+vuejs+nuxtjs
项目从http重定向到https,但是当我输入http://example.com或http://www.example.com时,会下载一个空文件
到目前为止我做了什么:
1-在 nginx.conf 中default_type application/octet-stream
添加注释和default_type text/html
代替
2-定义types { } default_type "text/plain";
example.com.conflocation /{}
3-nginx 使用下面的代码重定向
server{
listen xx.xx.xx.xx:80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
4-尝试使用带有以下 example.com.conf 文件的 .php 文件重定向它:
server {
listen 37.152.191.249:80;
server_name www.example.com example.com;
access_log /usr/local/apache/domlogs/example.com.bytes bytes;
access_log /usr/local/apache/domlogs/example.com.log combined;
error_log /usr/local/apache/domlogs/example.com.error.log error;
root /home/example/public_html/;
index index.php;
location / {
types { } default_type "text/plain";
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~* "/\.(htaccess|htpasswd)$" {deny all;return 404;}
disable_symlinks if_not_owner from=/home/example/public_html;
}
public_html 代码中的 index.php :
$location = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $location);
exit;
以上都没有奏效,问题仍然存在。
+当前配置:
nginx -t 报告:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
example.com.ssl.conf:
server{
listen xx.xx.xx.xx:443 http2 ssl;
server_name example.com;
ssl_certificate /etc/pki/tls/certs/example.com.bundle;
ssl_certificate_key /etc/pki/tls/private/example.com.key;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EE3CDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA!RC4:EECDH:!RC4:!aNULL:!eN$
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 60m;
return 301 https://www.example.com$request_uri;
}
server {
listen xx.xx.xx.xx:443 http2 ssl;
server_name www.example.com;
access_log /usr/local/apache/domlogs/example.com.bytes bytes;
access_log /usr/local/apache/domlogs/example.com.log combined;
error_log /usr/local/apache/domlogs/example.com.error.log error;
ssl_certificate /etc/pki/tls/certs/example.com.bundle;
ssl_certificate_key /etc/pki/tls/private/example.com.key;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA!RC4:EECDH:!RC4:!aNULL:!eN$
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 60m;
root /home/example/core/public/;
index index.php;
location / {
proxy_set_header Connection 'upgrade';
proxy_http_version 1.1;
proxy_pass https://xx.xx.xx.xx:3000$uri;
proxy_intercept_errors on;# In order to use error_page directive this needs to be on
error_page 404 = @php;
}
location @php {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~* "/\.(htaccess|htpasswd)$" {deny all;return 404;}
disable_symlinks if_not_owner from=/home/example/public_html;
location /.well-known/acme-challenge {
default_type "text/plain";
alias /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
}
location /.well-known/pki-validation {
default_type "text/plain";
alias /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
}
}
当前 example.com.conf:
server{
listen xx.xx.xx.xx:80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
我没有添加 nginx -T 报告,因为它显示了来自其他网站的不相关配置文件。
此外,运行多个站点的服务器和 wordpress 使用在#3处提供的代码进行重定向也没有问题,但是当涉及到使用 nuxtjs 的站点时,我下载了一个空文件。
任何帮助将不胜感激
我复制了我的一个 wordpress nginx 配置,并用域名替换了xxx部分,用服务器IP替换了yyy
它无需下载任何东西就被重定向到 https,我已经将我对 nginx 和 php-fpm 所做的所有更改恢复为默认值。
现在它的工作但为什么?
在玩耍后注意到将工作 nginx 配置的位置更改为
location ~ \.php$
(我之前使用的那个)将使问题返回。就是这样!没有进一步调查为什么
location ~ \.php$
不起作用但确实起作用。location ~ [^/]\.php(/|$)
希望能帮助到你。