其實最近開始要跟處理一些前端的工作。所以就開始架個開發環境。
由於我的開發區是一台LINUX主機。採用NGINX的WEB SERVER來處理。
先說明我碰到的問題。因該有用VUE的大多會碰到吧。
就是當我的vue路由設定為 "history" 會碰到404的錯誤問題。
其實在發布站也就是正式站。
我是可以用如下的nginx設定方式來解決的
location / {
           index  index.html index.htm;
           try_files $uri $uri/ @router;            
        }
        
        location @router {
            rewrite ^.*$ /index.html last;
        }        
可是,這不能用在開發生產環境下。
開發生產環境只能用如下的方式來處理
server_name  tadmin.test.net;
  	location  / {
    		proxy_pass http://127.0.0.1:8080/;
    		proxy_http_version 1.1;    		
  	}
    #給sockjs回應用
    location /sockjs-node {  		
    		proxy_pass http://127.0.0.1:8080;
    		proxy_http_version 1.1;
    		proxy_set_header Upgrade $http_upgrade;
    		proxy_set_header Connection "upgrade";    		
  	}  	
可惜的是,只要有用到路由。就一定會發生「Cannot GET /xxxx」的錯誤
我試著用很多設定的方式。都對應不了。目前只剩下如下的方式可以處理
server_name  tadmin.test.net;
  	location  / {
    		proxy_pass http://127.0.0.1:8080/;
    		proxy_http_version 1.1;    		
  	}
    #給sockjs回應用
    location /sockjs-node {  		
    		proxy_pass http://127.0.0.1:8080;
    		proxy_http_version 1.1;
    		proxy_set_header Upgrade $http_upgrade;
    		proxy_set_header Connection "upgrade";    		
  	}  	
    ## 對應路由建立 ##
    location  /login {
    		proxy_pass http://127.0.0.1:8080/;
    		proxy_http_version 1.1;    		
  	}
    location  /round1 {
    		proxy_pass http://127.0.0.1:8080/;
    		proxy_http_version 1.1;    		
  	}
    location  /user/get {
    		proxy_pass http://127.0.0.1:8080/;
    		proxy_http_version 1.1;    		
  	}
    location  /user/put {
    		proxy_pass http://127.0.0.1:8080/;
    		proxy_http_version 1.1;    		
  	}
也就是每一個對應路由我只能在nginx建立好對應。才會正常。
想問看看。是否有能用的設定方式,如
location ~ /.* {
    		proxy_pass http://127.0.0.1:8080/;
    		proxy_http_version 1.1;    		
  	}
以上是已經試過,也是不行的。
另外附帶一提我的開發環境。雖然上面用的proxy_pass指向是127.0.0.1
不過其實我的開發環境並不是直接再我本機上。而是我內網中的一個開發機器。
其test.net對應的是 192.168.0.100 這台機器。
server_name  tadmin.test.net;
  	location  / {
    		proxy_pass http://127.0.0.1:8080/;
    		proxy_http_version 1.1;    		
  	}
    #給sockjs回應用
    location /sockjs-node {  		
    		proxy_pass http://127.0.0.1:8080;
    		proxy_http_version 1.1;
    		proxy_set_header Upgrade $http_upgrade;
    		proxy_set_header Connection "upgrade";    		
  	}
這個我測試是正常的啊?
location  /
應該就連後面的網址都match到了。
但是api的部份可能你得特別寫連結到api server。
去確認看看404是vue router吐出來的還是nginx吐的吧。
反而
~ /.*
不好,這樣範圍太大。
倒是這樣被我偷學到一招了,呵呵
我本來都是直接用hash mode來debug。