![Ajax“POST”在 HTTPS/SSL Nginx 上不起作用](https://linux22.com/image/716064/Ajax%E2%80%9CPOST%E2%80%9D%E5%9C%A8%20HTTPS%2FSSL%20Nginx%20%E4%B8%8A%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我将 magento 商店从非 SSL 移至 SSL(网络服务器:Nginx)
问题:网站的 JS 脚本(带有“POST”的多个 Ajax 函数)已停止工作!请求正常,但无法获取响应。响应标头(501 B)
我非常确定这是由于 Nginx Web 服务器配置错误造成的。我需要使用反向代理来使用 SSL 吗?如果需要,该怎么做?请提供建议。
我的 Nginx example.conf 如下所示:
server {
listen 189.xx.xx.xx:80;
server_name example.com;
root /home/example/public_html;
index index.html index.php;
return 301 https://example.com$request_uri;
}
&我的 Nginx ssl-domain.conf 如下所示:
server
{
listen 189.xx.xx.xx:443 default ssl;
server_name example.com;
root /home/example/public_html;
index index.html index.php;
ssl on;
ssl_certificate /etc/ssl/example.crt;
ssl_certificate_key /etc/ssl/example.key;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php;
expires 30d;
}
location ~* \.(gif|jpg|jpeg|pdf|txt|css|js|png|ico|xml|xml|gz)$ {
access_log off;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
location ~ \.php$ {
expires off;
fastcgi_read_timeout 900s;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/conf/fastcgi_params;
}
}
答案1
我终于解决了这个问题,问题是 Nginx 没有传递 URL 参数。
我通过在位置块中附加 $args 解决了这个问题:
try_files $uri $uri/ /www/index.php?$args;
location / {
try_files $uri $uri/ /index.php?$args;
expires 30d;
}