計設使用Ant Design Vue和JFinal框架分別開發前端和後端,創建了一套招募背調系統。試著將專案部署到伺服器上,但在外部存取時持續出現404 Not 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如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!