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

发布了25 篇原创文章 · 获赞 28 · 访问量 5452

猜你喜欢

转载自blog.csdn.net/wzp12321/article/details/103140264
今日推荐