RT
Parce que je souhaite apprendre le serveur Nginx récemment, je souhaite construire un Tomcat+Nginx pour réaliser simplement la fonction de séparation dynamique et statique.
Ubuntu : ubuntu-16.04-desktop-amd64
JDK : jdk1.8.0_101
Tomcat : apache-tomcat-8.5.4
Nginx:nginx/1.10.0
ubuntu ip:192.168.182.129
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Note: A "Server" is not itself a "Container", so you may not
define subcomponents such as "Valves" at this level.
Documentation at /docs/config/server.html
-->
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!--APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- Global JNDI resources
Documentation at /docs/jndi-resources-howto.html
-->
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="test.nt.springmvc.com" appBase="webapps/springmvc"
unpackWARs="true" autoDeploy="true">
<Context path="/springmvc" docBase="springmvc.war"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
upstream tomcat {
server 192.168.182.129:8080;
}
server {
listen 80 default_server;
listen [::]:80 ;
root /opt/apache-tomcat-8.5.4/webapps/springmvc;
#server_name _;
server_name test.nt.springmvc.com;
location /{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tomcat;
try_files $uri $uri/ =404;
}
}
Via Tomcat, demandez l'URL : http://test.nt.springmvc.com :...
Via Nginx, demandez l'URL : http://test.nt.springmvc.com/
Via Nginx, demandez l'URL : http://test.nt.springmvc.com/...
Via Nginx, demandez l'URL : http://test.nt.springmvc.com/...
192.168.182.129 - - [28/Jul/2016:15:11:36 +0800] "GET /springmvc/test/ HTTP/1.1" 200 106
192.168.182.129 - - [28/Jul/2016:15:12:40 +0800] "GET / HTTP/1.0" 404 -
192.168.182.129 - - [28/Jul/2016:15:13:05 +0800] "GET /springmvc HTTP/1.0" 302 -
192.168.182.129 - - [28/Jul/2016:15:13:05 +0800] "GET /springmvc/ HTTP/1.0" 404 990
192.168.182.129 - - [28/Jul/2016:15:12:40 +0800] "GET / HTTP/1.1" 404 0 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
192.168.182.129 - - [28/Jul/2016:15:13:05 +0800] "GET /springmvc HTTP/1.1" 302 5 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
192.168.182.129 - - [28/Jul/2016:15:13:05 +0800] "GET /springmvc/ HTTP/1.1" 404 441 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
192.168.182.129 - - [28/Jul/2016:15:13:37 +0800] "GET /springmvc/test HTTP/1.1" 404 152 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
Comme vous pouvez le voir dans les journaux, ma quatrième demande n'a pas été transmise à Tomcat. J'ai recherché de nombreux documents sur Internet et je n'ai pas trouvé où le problème s'est produit. Vous trouverez ci-dessous la page Web correspondante
upstream tomcat {
server 192.168.182.129:8080;
}
server {
listen 80 default_server;
listen [::]:80 ;
root /opt/apache-tomcat-8.5.4/webapps/springmvc;
server_name test.nt.springmvc.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tomcat;
#try_files $uri $uri/ =404;
}
}
Vous pouvez voir cela dans le fichier de configuration nginx, commentez try_files $uri $uri/ =404 et vous pouvez y accéder normalement
try_files sur nginx détermine si le fichier existe
Fait référence au fichier et au chemin demandés, à l'exclusion des éléments après "?" ou "#"
$request_uri : /stat.php?id=1585378&web_id=1585378
$uri /stat.php
$document_uri : /stat php
光阴似箭催人老,日月如移越少年。