溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Nginx常見(jiàn)問(wèn)題有哪些

發(fā)布時(shí)間:2021-07-02 16:03:26 來(lái)源:億速云 閱讀:195 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“Nginx常見(jiàn)問(wèn)題有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

Nginx常見(jiàn)問(wèn)題收集

NGINX不允許向靜態(tài)文件提交POST方式的請(qǐng)求,否則報(bào)405錯(cuò)誤

telnet *.*.*.* 80
POST /map/navigation/2011winter/jsn/jsn_20120723_pack/pvf.jsn
HTTP/1.1
Host:*.*.*.* (2個(gè)回車(chē))

HTTP/1.1 405 Not Allowed
Server: MapbarServer
Date: Mon, 08 Oct 2012 05:34:53 GMT
Content-Type: text/html
Content-Length: 173
Connection: keep-alive

<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h2>405 Not Allowed</h2></center>
<hr><center>MapbarServer</center>
</body>
</html>

經(jīng)查發(fā)現(xiàn):NGINX不允許向靜態(tài)文件提交POST方式的請(qǐng)求,否則報(bào)405錯(cuò)誤
解決辦法:
1.在nginx vhosts配置文件中增加如下
error_page 405 =200 @405;
        location @405 {
        root /mapdata/www/datamobile/;
        proxy_method GET;
        proxy_pass http://map_tomcat;
    }

項(xiàng)目采用yaf和vue進(jìn)行前后端分離,訪問(wèn)頁(yè)面時(shí)正常. 但是刷新會(huì)報(bào)錯(cuò).甚至有時(shí)候會(huì)請(qǐng)求不到頁(yè)面.

  • 這個(gè)情況主要是用vue采用前后端分離之后前端有在public下有一個(gè)單獨(dú)的index.html

  • 他們所有的頁(yè)面都存放在這個(gè)index.html中.也就是說(shuō)所有的頁(yè)面請(qǐng)求都要打到這個(gè)文件中

  • 所以如果我們通過(guò)傳統(tǒng)的URL來(lái)請(qǐng)求頁(yè)面比如登錄,/user/login時(shí)會(huì)報(bào)錯(cuò)頁(yè)面不存在

  • 而我們的項(xiàng)目在部署的時(shí)候,將所有WEB和APP的接口都單獨(dú)新建Module中

  • 所以我們的接口請(qǐng)求,必然要有web或app字樣,所以我們通過(guò)修改NGINX中的配置文件.

  • 優(yōu)先匹配帶有app或web的URL,將其重置到public/index.php給yaf處理

  • 而其他的都交給public/index.html來(lái)處理

server {
    listen 80;
    server_name otc.coinegg.im;
    access_log  /home/work/logs/nginx/otc.coinegg.im.access.log main;
    error_log   /home/work/logs/nginx/otc.coinegg.im.error.log;
    
    root   /home/work/www/otc/public;
    # 禁止請(qǐng)求git相關(guān)的隱藏文件,這個(gè)也要放到前面來(lái),只要在location / 前面
    location ~ /.git/ {
        deny all;
    }

    # 這個(gè)要放到前面了來(lái), 做正則匹配,匹配到URL中含有WEB或APP時(shí)按照YAF重定向到index.php中
    location [/web/|/app/] {
        root   /home/work/www/otc/public; # 除非路徑不同否則這里不用重新定義root
        index  index.php;
        
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?$1 last;
        }
    }
    # 這要放到后面來(lái), 即所有的請(qǐng)求全部重定向到index.html中
    location / {
        root   /home/work/www/otc/public; # 除非路徑不同否則這里不用重新定義root
        index  index.html;
        try_files $uri $uri/ /index.html;
    }
    # 這里是FPM用的,保持不變即可
    location ~ \.php$ {
        index index.php;
        fastcgi_pass   unix:/tmp/unix/php-cgi.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

make -j2報(bào)錯(cuò),我在ubuntu18.04下有這個(gè)錯(cuò)誤

# make -j2如果報(bào)錯(cuò):objs/Makefile:591: recipe for target 'objs/src/core/ngx_murmurhash.o' failed
# 我在ubuntu18.04下有這個(gè)錯(cuò)誤
# 在objs/Makefile中將 -Werror 刪除,對(duì)于warnings忽略
# vim objs/Makefile 找到第三行的CFLAGS = -I/usr/local/luajit/include/luajit-2.0  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused -Werror -g  -DNDK_SET_VAR
# 刪掉-Werrori 即可

“Nginx常見(jiàn)問(wèn)題有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI