ngnix 相關

一、ngnix + tomcat

1、ngnix配置如下

server {
    listen       801;
    server_name  localhost;
    location /planeApi {
            proxy_set_header  Host $host;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-Proto https;
            proxy_set_header  X-Forwarded-For $remote_addr;
            proxy_set_header  X-Forwarded-Host $remote_addr;
            proxy_pass http://127.0.0.1:8095;
        }
    }

 2、tomcat server.xml 添加如下配置,tomcat 的webapp下的war包名字改爲 planeApi.war

<Context path="/" docBase="C:\software\apache-tomcat-8.5.24\webapps" reloadable="true" />

 如上,我們在訪問 http://localhost:801/planeApi 時會被ngnix 轉發到 http://localhost:8095 上,即我們訪問 http://localhost:801/planeApi/test 就是訪問 http://localhost:8095/planeApi/test

有個小方法,我們不需要配置tomcat裏面的server.xml文件,那就是直接把 war 包文件的名字修改爲 ROOT.war,當然,這樣修改的話,訪問 http://localhost:801/planeApi/test 就是訪問 http://localhost:8095/test

二、ngnix 本身,配置如下

server {
        listen       80;
        server_name  localhost;

        location /plane {
            root   test;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
		
		location = /50x.html {
            root   html;
        }
    }

如上,我們訪問 http://localhost/plane 時就會訪問到 ngnix 根目錄下的 test/plane目錄下的文件,即訪問的是 http://localhost/plane/index.html

這裏出了一個坑,如下圖,ngnix 自身有一個默認的server配置,它也是監聽的localhost 80 端口,然後因爲優先級順序,以及 location配置的關係,導致我們在訪問 http://localhost/plane 時,它去 ngnix 的 html 目錄下找 plane 目錄了,當然,這是肯定找不到的,會報錯404......

三、順便說一下 ngnix 的 location 常用的配置

location = / {

精確匹配,必須是127.0.0.1/
 
}

location / {

什麼都可以匹配
http://localhost/register11
http://localhost/register111
 
}
 
location = /login {

精確匹配,必須是127.0.0.1/login
 
}
 
location ^~ /static/ {

非精確匹配,並且不區分大小寫,
比如 http://127.0.0.1/static/js,http://localhost/static/a.html
 
}
 
location ~ \.(gif|jpg|png|js|css)$ {

區分大小寫,以gif,jpg,js結尾
比如 http://localhost/a.gif, http://localhost/b.jpg
 
}
 
location ~* \.png$ {

不區分大小寫,匹配.png結尾的
比如 http://localhost/b.png
 
}
 
location !~ \.xhtml$ {

區分大小寫,匹配不以.xhtml結尾的
比如 http://localhost/a.xhtml 會被排除掉
 
}
 
location !~* \.xhtml$ {

不區分大小寫,匹配不以.xhtml結尾的
比如 http://localhost/a.XHTML,http://localhost/a.xhtml 都會被排除掉
 
}

四、alias、root 的區別

location /plane {
    alias /test/;
}

如上,訪問 /plane/ 裏面的文件時,ngnix 則會去 /tets/ 目錄下找文件,alias 是一個目錄別名的定義,alias 後面必須用 / 結束,否則找不到文件,到時候會懵逼的......

location /plane {
    root test;
}

如上,訪問 /plane/ 裏面的文件時,ngnix 則會去 /tets/plane/ 目錄下找文件,root 是 最上層根目錄的定義,後面的 / 可有可無,不重要,也不影響......

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章