So lösen Sie das domänenübergreifende Nginx-Problem

WBOY
Freigeben: 2023-05-13 23:43:04
nach vorne
5345 Leute haben es durchsucht

Trennen Sie Front-End und Back-End und verwenden Sie Nginx, um domänenübergreifende Probleme zu lösen.

Front-End: vue.js+nodejs+webpack -End-Code und lassen Sie Nginx auf statische Ressourcen verweisen. Nginx leitet Hintergrundanforderungen weiter.

1. Packen Sie den Front-End-Code:

npm run build
Nach dem Login kopieren

generiert einen dist-Ordner. Enthält eine index.html-Datei und einen statischen Ordner. Nehmen Sie als Beispiel meinen lokalen Pfad:

/ideaprojects/webtest/dist

2. Öffnen Sie das Verzeichnis

/usr/local/etc/nginx nginx.conf, fügen Sie Folgendes auf dem Server hinzu:

listen  80; #原为8080,避免冲突,更改为80

  server_name localhost;

 

  #charset koi8-r;

 

  #access_log logs/host.access.log main;

 

 

  location / {

   root /users/xxx/ideaprojects/webtest/dist;

   index index.html;

    

   # 此处用于处理 vue、angular、react 使用h5 的 history时 重写的问题

   if (!-e $request_filename) {

    rewrite ^(.*) /index.html last;

    break;

   }

  }

 

 

  # 代理服务端接口

  location /api/ {

   proxy_pass http://localhost:8080/;# 代理接口地址

  }
Nach dem Login kopieren

Test

Das Frontend sendet eine Anfrage: http://localhost/test, vue-router leitet sie an http://localhost/api/demo weiter /1 , der tatsächliche Zugriff ist http://localhost:8080/demo/1.

Senden Sie eine Anfrage direkt an den Hintergrund: Besuchen Sie http://localhost/api/demo/1, der tatsächliche Besuch ist: http://localhost:8080/demo/1Über eine Inhaltserweiterung nachdenken:

1 ).

# Die Proxy-Server-Schnittstelle

location /api/ {
proxy_pass http://localhost:8080/;# 代理接口地址
}
Nach dem Login kopieren

Die Proxy-Schnittstellenadresse erreicht nur 8080, dann wird automatisch der Name des Backend-Projekts hinzugefügt? ? ? Die Schnittstelle lautet beispielsweise http://148.70.110.87:8080/Projektname/Methodenname. . .

2).js wird wie folgt konfiguriert, aber der Anforderungsfehler ist http://148.70.110.87/api/index2 404 (nicht gefunden)

axios.post('/api/index2')
.then( (response) =>{
console.log(response);
})
.catch( (error)=> {
console.log(error);
});
Nach dem Login kopieren

3). Beim Testen kann ich es wirklich nicht verstehen. Es wäre toll, wenn es relevanten Code gäbe

Das obige ist der detaillierte Inhalt vonSo lösen Sie das domänenübergreifende Nginx-Problem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage