V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
JJaicmkmy
V2EX  ›  NGINX

遭遇离奇的 Nginx 错误

  •  
  •   JJaicmkmy · 2015-10-09 11:46:57 +08:00 · 3767 次点击
    这是一个创建于 3358 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近把 VPS 上的 Apache 换成了 Nginx 。 VPS 上有两个网站,其中一个是 Ghost+Nginx 反代,没有任何问题。还有一个 WordPress ,假设域名是 www.example.com ,访问的时候一直都会跳转到 www.example.com/mail ,然后返回 404.如果建一个 mail 目录。把网站放进去,就可以正常访问。但是就是搞不懂为什么会跳转到 /mail 。
    这是我的配置文件:

    server {
        listen 45.117.100.000:80;
        listen 45.117.100.000:443 ssl;
        server_name www.example.com;
    
        ssl_certificate /path/to/cert.crt;
        ssl_certificate_key /path/to/private.key;
        ssl_protocols SSLv3 TLSv1;
        ssl_ciphers ALL:-ADH:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP;
    
        root /var/www/html;
    
        location / {
            index index.html index.htm index.php;
    
            if (!-e $request_filename) {
                rewrite . /index.php last;
            }
        }
    
    location ~ \.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
        }
    
    还有,电脑上任何浏览器都访问正常,但是手机上访问 https 却提示无法建立安全的连接。
    
    17 条回复    2015-10-10 15:59:32 +08:00
    chairuosen
        1
    chairuosen  
       2015-10-09 12:03:29 +08:00
    是不是 wordpress 设置了 mail 是首页?
    JJaicmkmy
        2
    JJaicmkmy  
    OP
       2015-10-09 12:49:16 +08:00
    @chairuosen 没有。但是如果设置了 mail 是首页倒是可以正常打开。
    lhbc
        3
    lhbc  
       2015-10-09 13:02:41 +08:00 via Android
    curl -I 域名
    然后查 nginx 日志
    henryon
        4
    henryon  
       2015-10-09 13:07:44 +08:00
    你后端是 PHP ? index.php?里面写的是啥 ?
    boro
        5
    boro  
       2015-10-09 13:13:13 +08:00
    你是放到 root /var/www/html 目录下么?
    salmon5
        6
    salmon5  
       2015-10-09 13:17:28 +08:00
    ssl_protocols SSLv3 TLSv1;
    ssl_ciphers ALL:-ADH:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP;
    这 2 行配置可以删了,并没有什么好处。
    tntsec
        7
    tntsec  
       2015-10-09 13:24:48 +08:00
    server {
    listen 80;
    server_name www.tntsec.com;

    root /var/www/html/tntsec;
    index index.php index.html index.htm;

    location ~ .*\.php(\/.*)*$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    }
    loveminds
        8
    loveminds  
       2015-10-09 14:59:47 +08:00
    @salmon5 和 SSL 没有关系
    @JJaicmkmy 在你这个 conf 里面没有看到任何地方和 mail 有关,建议检查下 nginx.conf 有没嵌套别的东西
    loveminds
        9
    loveminds  
       2015-10-09 15:03:01 +08:00
    我估计 LZ 曾经装过类似 squirrelmail 或者 roundcube 之类的东西,它们有时会在 nginx.conf 里添加 include ,建议检查下 nginx.conf 嵌套的所有配置文件
    skylancer
        10
    skylancer  
       2015-10-09 15:46:00 +08:00
    fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name

    这一行改成 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    JJaicmkmy
        11
    JJaicmkmy  
    OP
       2015-10-09 15:52:12 +08:00 via iPad
    @boro 是的
    @henryon 就是 WordPress 自带的 index.php
    JJaicmkmy
        12
    JJaicmkmy  
    OP
       2015-10-09 15:53:54 +08:00 via iPad
    @loveminds 以前用 Apache 的时候装过,后来删了。现在重新编译安装 Nginx 了,还会自动在 Nginx 里 include 吗?
    boro
        13
    boro  
       2015-10-09 16:07:34 +08:00 via iPhone
    html 目录下要给个网站建个独立文件夹,还有 ls 站点配置文件到对应的目录是否正确?
    lightforce
        14
    lightforce  
       2015-10-09 18:07:15 +08:00
    /var/www/html$fastcgi_script_name;
    loveminds
        15
    loveminds  
       2015-10-09 19:52:28 +08:00
    @JJaicmkmy 检查一下配置文件
    yaxin
        16
    yaxin  
       2015-10-10 09:40:51 +08:00
    问题出在 nginx 或者 php ( Wordpress )身上,但是 nginx 本身不是很好调试,所以先排除是不是 php 的问题

    在 /var/www/html 下的 index.php 最前面添加<?php phpinfo();die; ?>

    然后用命令行 curl 或者其它别的可以看网络连接的浏览器(如 firefox firebug 或 chrome 的调试窗口),记住千万不要用之前的浏览器,因为 301 跳转会被浏览器缓存下来,最好用 curl ,看一下返回的状态码是否为 200(curl -i http://www.example.com), 如果不是 200 ,那么在 Wordpress 中找原因,如果是 200 ,重新编译一个--with-debug 的 nginx ,然后将 debug 日志打印出来看 nginx 哪里配置有问题
    webpig
        17
    webpig  
       2015-10-10 15:59:32 +08:00
    建议检查一下 php 的配置文件。如果 OS 是 ubuntu ,文件是 /etc/php5/fpm/pool.d/www.conf
    看一下 chroot 这一行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2488 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:54 · PVG 23:54 · LAX 07:54 · JFK 10:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.