首頁 > 軟體

nginx存取動態介面報錯404Not Found問題解決

2023-03-05 14:04:17

問題描述

計設做了一套招聘背調系統,前後端分別使用了Ant Design Vue與JFinal框架。想要將專案部署到伺服器上,但是外部存取一直報錯404Not Found

解決思路

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

首先測試專案內介面:

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

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

執行結果:

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

再測試nginx代理後的介面:

再ubuntu中輸入命令

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

執行結果:

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

按照其他部落格的建議,我將nginx設定中這個地方加上了斜槓

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

徹底解決

在當我不知道怎麼辦的時候,我突然發現我的伺服器中,有兩個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存取動態介面報錯內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com