首頁  >  文章  >  運維  >  nginx存取動態介面報錯404Not Found如何解決

nginx存取動態介面報錯404Not Found如何解決

WBOY
WBOY轉載
2023-05-16 17:28:122693瀏覽

問題描述

計設使用Ant Design Vue和JFinal框架分別開發前端和後端,創建了一套招募背調系統。試著將專案部署到伺服器上,但在外部存取時持續出現404 Not Found 錯誤

nginx存取動態介面報錯404Not Found如何解決

#解決想法

把錯誤定位為:找不到動態接口,但是不知道是專案中出現了問題,還是經nginx代理後出現了問題。
因此要分別測試 專案本身的介面 和 nginx代理程式後的介面。

先測試專案內介面:

在ubuntu端輸入指令:curl http://localhost:port/xxx/xxx

這裡我的介面是: curl http://localhost:20294/sys/login

執行結果:

nginx存取動態介面報錯404Not Found如何解決

說明我的專案內介面是沒有問題的。

再測試nginx代理程式後的介面:

再在ubuntu中輸入指令

curl http://localhost:8080/api/user/login

執行結果:

nginx存取動態介面報錯404Not Found如何解決

這裡提示找不到介面了,表示問題出在代理伺服器nginx上,所以我們要去修改nginx的設定檔。

依照其他部落格的建議,我將nginx配置中這個地方加上了斜線

nginx存取動態介面報錯404Not Found如何解決

重啟伺服器後,還是不行。

徹底解決

在當我不知道怎麼辦的時候,我突然發現我的伺服器中,有兩個nginx·····
我在想是不是因為有兩個nginx,修改的設定檔不是我啟動的那個nginx。於是我把所有nginx設定檔都替換成我原始的設定文件,再重啟。還是不行

擔心是兩個nginx的問題,我把伺服器裡的所有nginx都刪除了。刪除步驟(依序運行下面的步驟):

ps aux|grep nginx  #查看nginx进程
kill -9 进程号      #杀死上一步中查询到的nginx(进程号在第二列)
find / -name nginx #找到nginx的文件地址
rm -rf xxx         #删除nginx所有文件

最後用weget安裝新的nginx,然後按照原本安裝步驟進行安裝,修改配置文件後,再運行curl訪問動態接口,突然就可以了!

下面貼出我的nginx設定檔:

user root;
#user  nobody;
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    underscores_in_headers on;
    large_client_header_buffers 4 32k;
    client_max_body_size 50m;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nopush          on;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout    300;
    fastcgi_read_timeout    300;
    fastcgi_buffer_size     64k;
    fastcgi_buffers     4   64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;
    tcp_nodelay         on;

    #gzip  on;


    ######################################################
    #############     麻雀配置地址    ###########
    ######################################################
    server {
        listen       8080;
        server_name  somename;

        location /api/ {
            proxy_pass http://0.0.0.0:20294/; #映射到本地端口。
            proxy_redirect off;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 200m;
            proxy_connect_timeout 600;
            proxy_read_timeout 600;
        }
        
        location / {
            root /root/project-template/config/static;
            try_files $uri $uri/ @router;
            index index.html;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 200m;
            proxy_connect_timeout 600;
            proxy_read_timeout 600;
        }

        location @router {
            rewrite ^.*$ /index.html last;
        }
    }
}

要注意的是:設定動態存取api的時候,記得在最後加上斜線

nginx存取動態介面報錯404Not Found如何解決

以上是nginx存取動態介面報錯404Not Found如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除