欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ngnix 相关

程序员文章站 2022-07-08 19:51:04
...

一、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 相关

三、顺便说一下 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 是 最上层根目录的定义,后面的 / 可有可无,不重要,也不影响......

 

相关标签: ngnix