Lavanya,

On 5/14/24 03:47, lavanya tech wrote:
Hi Chris,

Tried the below steps. I have the redirection working. But the URL is not
in the browser anymore.

1)       <Host name="localhost" appBase="webapps" unpackWARs="true"
autoDeploy="true">
           <Valve
className="org.apache.catalina.valves.rewrite.RewriteValve" />

2) /conf/Catalina/localhost --> I added the below in rewrite.config

RewriteCond %{HTTP_HOST} ^example\.lbg\.com$
RewriteCond %{REQUEST_URI} !^/towl$
RewriteRule ^/(.*) https://server.lbg.com:8443/towl [R=301,L]

The problem with this is that it can redirect forever.

/towl/foo -> /towl/towl/foo -> /towl/towl/towl/foo and so on.

Your "stop criteria" ( !^/towl$ ) needs to be more like !^/towl/ without the $.

Then it redirects from https://example.lbg.com -->
https://server.lbg.com:8443/towl but the application team raised a concern
the

    - alias https://example.lbg.com/--> url stays in the browser

IMHO removing the port number is always the preferred solution.

If https://example.lbg.com/ isn't returning a 301 response, then something is not quite right with your configuration.

    - towl indexer uses the internal address https://
    <https://denue-lp-build001.nbg.nokia.net/grok>server.lbg.com.8443/towl rsp.
    localhost:8443/towl

can we achieve this with tomcat or we need to setup an reverse proxy here.

Your application uses whatever internal URLs it wants. Are you building those yourself, or are you asking Tomcat for the e.g. hostname, etc.? If it's Tomcat, this is where the proxyName and proxyPort come in.

-chris

On Mon, May 13, 2024 at 10:17 PM lavanya tech <lavanyatech...@gmail.com>
wrote:

Hi Chris,

Sorry, If I did confuse. It’s important that
https://server.lbg.com:8443/towl is always working. Goal is not to
disable /towl, but just redirect or aliasing

https//example.lbg.com/ to https://server.lbg.com:8443/towl




Thanks,
Lavanya

On Monday, May 13, 2024, Christopher Schultz <ch...@christopherschultz.net>
wrote:

Lavanya,

On 5/13/24 05:57, lavanya tech wrote:

Somehow made it work now i can only access urls as you mentioned before
https://example.lbg.com and https://server.lbg.com with port 8443 and
with
out

   https://example.lbg.com/towl and https://server.lbg.com/towl --> I
have an
error now File not found.

So i think we need to make work https://example.lbg.com/ to
https://server.lbg.com/towl


I'm sorry, I'm still confused as to which way you want things.

Do you want to redirect /towl -> / or do you want to redirect / - > /towl?

Or does it depend upon the hostname? It would really be better if you
could settle on one specific beahvior.

-chris

On Mon, May 13, 2024 at 9:41 AM lavanya tech <lavanyatech...@gmail.com>
wrote:

Hi Chris,

Where are you defining the RewriteValve itself?

Defined rewritevalve here
        <Host name="localhost"  appBase="webapps"
              unpackWARs="true" autoDeploy="true">

            <Valve
className="org.apache.catalina.valves.rewrite.RewriteValve" />
                   resource="conf/rewrite.config" />

2) reated rewrite.config and added as below under conf/

   RewriteCond %{REQUEST_URI} ^/towl/(.*)
   RewriteRule ^/towl/(.*) https://example.lbg.com/%1 [R]

3) After renaming towl to ROOT -> /webapps/ROOT/WEB-INF/web.xml ( I
already have this mappings /* in web.xml file)

     <security-constraint>
        <web-resource-collection>
          <web-resource-name>Logging Area</web-resource-name>
          <description>
          Authentication for registered users.
          </description>
          <url-pattern>/*</url-pattern>
          <url-pattern>/api/v1/search</url-pattern> <!-- protect search
endpoint whitelisted above -->
          <url-pattern>/api/v1/suggest/*</url-pattern> <!-- protect
suggest
endpoint whitelisted above -->
        </web-resource-collection>
          <auth-constraint>
              <role-name>LDAP_USER</role-name>
              <role-name>api</role-name>
          </auth-constraint>
      </security-constraint>

4) Restarted Tomcat, Then I cannot access
https://server.lbg.com:8443/towl
--> Have below error

Message java.nio.file.NoSuchFileException:
/git/apache-tomcat-10.1.11/webapps/towl/WEB-INF/lib/xss-1.0.8.jar

Description The server encountered an unexpected condition that
prevented
it from fulfilling the request.

5) Also https://example.lbg.com doesnot work anymore

Before you do anything with redirecting, can you just make sure you are
only deploying ROOT.war and nothing else?
      How can I do that. I already changed towl.war to ROOT.war

But still both the urls have error as mentioned above.


Si I revereted back the changes.
That's weird. Try stopping, deleting the work/ directory and restarting.
--> I have this wierd behavior for some reason, thoudh index.jsp is
located
no changes were made to file. After deleting cookies url works

where Am I going wrong.

Thanks,
Lavanya


On Fri, May 10, 2024 at 6:50 PM Christopher Schultz <
ch...@christopherschultz.net> wrote:

Lavanya,

On 5/10/24 04:37, lavanya tech wrote:

I tried the below and have the issues.

1)proxyPort="443" and proxyName="example.lbg.com" to the connector
2) remanmed towl.war to ROOT.war
3) created rewrite.config and added as below under conf/


Where are you defining the RewriteValve itself?

RewriteCond %{REQUEST_URI} ^/towl/(.*)
RewriteRule ^/towl/(.*) https://example.lbg.com/%1 [R]


If this is being handled by the ROOT servlet then I think it's right.

4) added this in web.xml file of /webapps/towl/web.xml/

     <!-- Servlet mappings -->
       <!-- Add your existing servlet mappings here -->

       <!-- Security constraint to restrict access to /towl path -->
       <security-constraint>
           <web-resource-collection>
               <web-resource-name>Restricted Access to
/towl</web-resource-name>
               <url-pattern>/towl/*</url-pattern>


No, this is wrong. Since this is the "towl" application and not ROOT,
you want to map /* and not /towl/* because the application will never
see the /towl/ as it's an application/context prefix that Tomcat will
remove.

           </web-resource-collection>
           <auth-constraint>
               <!-- Deny access to all roles -->
           </auth-constraint>
       </security-constraint>

Also I noticed that even if I rename the towl application to ROOT,
when

i

call the url with https://example.lbg.com/towl --> this towl
directory

is

getting created under webapps by default


If webapps/towl is being created, then it's happening for some other
reason. Do you have anything under conf/Catalina/*/towl.xml which
points
to a WAR file or something? If so, remove that.

5) Resarted tomcat and I have the below error and all the urls have the
same issue

Message org.apache.jasper.JasperException:
java.lang.ClassNotFoundException: org.apache.jsp.index_jsp


That's weird. Try stopping, deleting the work/ directory and
restarting.

Description The server encountered an unexpected condition that

prevented

it from fulfilling the request.

Exception

org.apache.jasper.JasperException: org.apache.jasper.JasperException:
java.lang.ClassNotFoundException: org.apache.jsp.index_jsp


org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:578)



org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:422)


org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
org.apache.tomcat.websocket.se
rver.WsFilter.doFilter(WsFilter.java:51)


Before you do anything with redirecting, can you just make sure you are
only deploying ROOT.war and nothing else?

This should allow you to reach the application at both
https://example.lbg.com/ and https://server.lbg.com/ as well as both
of
those with port 8443.

Then use the applications and make sure they are working as expected.
Then, we'll add the /towl handling.

-chris

On Thu, May 9, 2024 at 11:20 PM Christopher Schultz <
ch...@christopherschultz.net> wrote:

Lavanya,

On 5/9/24 13:48, lavanya tech wrote:

Thank you so much for your explanation. I will try these options.

Do server and example both resolve to the same IP?
            -yes


Good, that significantly reduces the complexity required, since you
can
do it will a single process (Tomcat) in a single environment.

So I need follow both 4a/b and 5a/b steps here or any of them ?

If I setup exactly by using below steps , then I should access both

the

urls right ? https://server.lbg.com:8443/towl and

https://example.lbg.com

If you visit either hostname with /towl, you will be redirected to
example.lbg.com/ with no port number. example:8443 will still work
and
no redirect will take place... unless you specifically make

arrangements

for that. We can do that later if you really want to.

Let's get the other things working, first.

-chris

On Thursday, May 9, 2024, Christopher Schultz <

ch...@christopherschultz.net>

wrote:

Lavanya,

On 5/9/24 02:58, lavanya tech wrote:

Just giving background again of this topic again.

1) The application team who is working they wanted to access the
url
https://server.lbg.com:8443/towl —> which should redirect or
point

to

https://example.lbg.com

Is that a typo? You want specifically https://server.lbg.com/towl

and

https://example.lbg.com/ to point to your application?
                   — It’s not the Typo the requirements are still
the

same.



Okay.

Do server and example both resolve to the same IP?

2) Hence I added firewall rule to redirect port 443 to 8443. And
the

url

https://example.lbg.com started working but its pointing to
https://server.lbg.com:8443 indeed and not

https://server.lbg.com:8443/to

wl

But then they wanted the point 1 to have it. If I understood

correctly. So

basically to achieve this we wanted a reverse proxy setup ?

I didnot define any additional host in server.xml file on just
left

to

default to  local host.


Here's what you have to do in order to support this odd

configuration.


1. Configure your firewall to route port 443 -> 8443. I suspect
this

is

already done.

2. Deploy Tomcat on server.lbg.com with a <Connector> on port
8443.

This

is the default, so there shouldn't be anything to do. I suspect this

is

already done. You should set proxyPort="443" and proxyName="
example.lbg.com" in your <Connector>. This will ensure that any
URLs
generated by Tomcat or your application will point to
https://example.lbg.com/ and not to server.lbg.com or have a port

number

or whatever.

3. Re-name your application directory or WAR file from towl -> ROOT

(upper

case is important). So if you have tomcat/webapps/towl re-name that

to

tomcat/webapps/ROOT or if you have tomcat/webapps/towl.war re-name

that

to

tomcat/webapps/ROOT.war.

The last thing to do is get /towl to re-direct to /. There are a
few

ways

of doing that.

4a. Configure your application (now called ROOT and deployed on /
and

not

/towl anymore) to handle the /towl URL and specifically redirect
this

back

to /. This is oddly specific and has the application trying to

redirect

to

itself which is weird.

4b. Create a new application called towl or towl.war which will be
deployed on /towl and have THAT redirect to /. I think this is

cleaner

because you can call the application anything you'd like and it will

still

work. You don't have to match URL patterns yourself, you just
re-name

the

WAR file if you suddenly want to use /towl2 instead of /towl.

There are several ways to redirect.

5a. Use the rewrite valve and map /(*) to (global redirect) /\1. A

few

notes: (1) the (*) means "capture this string" and \1 means "put the

string

back. This allows you to redirect /towl/foo/bar to /foo/bar instead

of

losing the /foo/bar. This syntax may not be perfect, adapt it to your
needs. (2) Remember that the towl application is deployed on /towl
so

you

don't want to redirect /towl/foo/bar you only want redirect /foo/bar

since

the URL will be relative to the current context (/towl). Got that?

Finally,

(3) you need to use a global redirect that does *NOT* redirect back

to

the

/towl application. Normally, if you redirect to /foo you'll get an
application-relative redirect from something like a rewrite
valve/filter/whatever. Take care to redirect relative to the SERVER

and

not

to the application.

5b. Write your own servlet to do a specific redirect.

I hope that helps,
-chris

On Wednesday, May 8, 2024, Christopher Schultz <

ch...@christopherschultz.net>
wrote:

Lavanya,


On 5/8/24 06:48, lavanya tech wrote:

I figured out how I can it make it work with 443. Now the URls
are

working.
I added iptables route 443 to 8443 and it started working.

nslookup example.lbg.com

Non-authoritative answer:
Name:    server.lbg.com
Address:  192.168.200.105
Aliases:  example.lbg.com


I have some application towl running with apache tomcat. I have

the

below
URLs working.

https://server.lbg.com:8443/towl
https://server.lbg.com
https://example.lbg.com
https://example.lbg.com/towl


Now i wanted to disable the url https://example.lbg.com/towl
and
https://server.lbg.com and access only the other remaining two.





I would *highly* recommend that you pick either /towl or / and not

try to

do both, unless you want to deploy the application twice (which is

fine,

just deploy towl.war and ROOT.war as copies of each other). If you

try to

re-write /towl to / or / to /towl, you'll find you spend the rest

of

your

days tracking-down edge-cases and "fixing" them -- likely making

things

confusing and, probably, worse.

In the end our goal to makesure that the links are not  always

dead as

soon

as the towl is moved to a new machine. Can you pelase assit me
how

to do

that?


The goal should be that "moving" the application only means

changing

DNS

and everything else works as expected.

If you:

1. Deploy the application with a single context (e.g. /towl,
which

I

recommend)

2. Re-direct / to /towl (this requires a reverse-proxy or a ROOT
application that does nothing but redirect ; my personal

preference)


3. Do not define any <Host> other than "localhost" and make it
the
default. Do not bother with any <Alias> elements since they are
not
necessary.

Moving the application should only require that you:

4. Deploy the same application with the same configuration in the

new

location

5. Change DNS to point example.lbg.com and server.lbg.com to the

new

location of the service

Hope that helps,
-chris

On Tue, Apr 30, 2024 at 5:44 PM Christopher Schultz <
ch...@christopherschultz.net> wrote:

Lavanya,

On 4/30/24 07:10, lavanya tech wrote:

Can you tell me how to do the below ? How should I setup Tomcat
in
server.xml ?


If you want to use port 443 (the default port for HTTPS) then you

will

need to change Tomcat to bind to port 443 (if that's allowed on

your

OS)

or arrange to have port 443 routed to port 8443. You may need

additional

configuration in Tomcat (specifically: proxyPort) to avoid having

Tomcat

generate URLs with ":8443" in them.

Looking forward to your reply.


If Tomcat is listening on port 8443 then you will need to include

that

in your URL, period. If you want to allow URLs without a port

number,

you will have to arrange to have something listening on port 443.

On Windows, Tomcat can listen directly on port 443. On UNIX and
UNIX-like systems, you won't be able to do this without running

Tomcat

as root WHICH YOU ABSOLUTELY SHOULD NOT DO.

There are other ways to get port 443 working, but I'll need to
know

more

about your environment. The port issue is "easier" than figuring

out

whatever is going on with your DNS, aliases, etc. so I would

recommend

we fix one thing at a time.

-chris

On Mon, Apr 29, 2024 at 2:03 PM lavanya tech <

lavanyatech...@gmail.com>

wrote:

Hi Chris,

There is no issues with browser, because I tested with different

browsers

and it all works fine. I am sure that there is no issue with the
certificate.
        Because I was able to establish successful connections
with

port


8443, it

just doesnot work with out port

        curl  https://example.lbg.com/towl
curl: (56) Received HTTP code 504 from proxy after CONNECT
curl: (56) Received HTTP code 504 from proxy after CONNECT


If you want to use port 443 (the default port for HTTPS) then you

will

need to change Tomcat to bind to port 443 (if that's allowed on

your

OS)

or arrange to have port 443 routed to port 8443. You may need

additional

configuration in Tomcat (specifically: proxyPort) to avoid having

Tomcat

generate URLs with ":8443" in them.

<Connector port="443" protocol="HTTP/1.1"
                  connectionTimeout="20000"
                  redirectPort="8443"
                  maxThreads="150"
                  scheme="https" secure="true" SSLEnabled="true"
                  keystoreFile="path_to_your_keystore_file"
                  keystorePass="your_keystore_password"
                  keystoreType="PKCS12"
                  clientAuth="false" sslProtocol="TLS"
                  proxyPort="443"/>

should i use connect port like the above ?  But you mentioned

before

we

dont need any configuration changes. Please clarify I am not able

to


figure

this out and I have this issue many days pending. How to make it

work


with

port 8443 and with out port

Also I wanted to use weburl with alias name permanently instead
of

the

hostname. How can I achieve both

Thanks,
Lavanya


         -->


On Fri, Apr 26, 2024 at 9:28 PM Christopher Schultz <
ch...@christopherschultz.net> wrote:

Lavanya,

On 4/25/24 07:24, lavanya tech wrote:

Hi Chris,

One question / doubt:

As I mentioned earlier, the below URLS already working in the

browser


https://server.lbg.com:8443/towl
https://example.lbg.com:8443/towl -> redirect ( which means
when I

hit in

browser) it points to https://server.lbg.com:8443/towl ---> To
be

frank,

even I donot need redirect here, not sure why it redirects.

My question is why its working even though SAN is not registered

with


the

certificate ? It doesnot even throw warning in the browser.


I'm not sure. Is it possible you have dismissed this error in the

past

and the browser is remembering that? Try this with a different web
browser or maybe with curl from the command-line to see what

happens.


Why https://server.lbg.com/towl or https://example.lbg.com/towl

-->


How it

should work with New SAN certificate ?


You don't need to worry about the port number or application
name,

only

the hostname is a part of the SAN.

-chris

On Thu, Apr 25, 2024 at 10:16 AM lavanya tech <

lavanyatech...@gmail.com


wrote:

Hi Chris,


Thanks I will request new certificate with SANs and I will try to

fix


the

things from our end.

Best Regards,
Lavanya

On Wed, Apr 24, 2024 at 11:12 PM Christopher Schultz <
ch...@christopherschultz.net> wrote:

Lavanya,

On 4/24/24 15:39, lavanya tech wrote:

Local host means the machine i am logged in to server.lbg.com

You are right, example.lbg.com is CNAME record.


Okay, thanks for clearing that up.

I dont have any SAN configured for the certificate. The
certificate

is

requested for only server.lbg.com


You will never be able to make a secure request to anything other

than

server.lbg.com without seeing an error. I highly recommend
adding

the

other hostname as a SAN to your certificate if you really want to
support this.

Even if you wanted https://example.lbg.com/whatever to return an

HTTP

302 redirect to https://server.lbg.com/whatever, the user would

see a

certificate hostname mismatch error which is ugly. It's best to

make


it

work without users seeing ugly things.

So if i just request new certificate with SAN it should work ? If

yes, I

will request for it and follow your steps as below suggested.


Yes, it should.

Should i use CName record or DNS? Does it make difference?


CNAME *is* DNS.

Whenever possible, use hostnames and not IP addresses as SANs.
It's

more

flexible that way, and users get to see hostnames instead of IP

addresses.


-chris

On Wednesday, April 24, 2024, Christopher Schultz <
ch...@christopherschultz.net> wrote:

Lavanya,

On 4/24/24 07:37, lavanya tech wrote:

Sorry I understood wrongly here with regards to my environment,

Let me

start from the beginning. I donot want to use redirect at all. I

simply

wanted to force apache tomcat to use both localhost and dns name

of

the

localhost via url.


When you say "force" what do you mean?

When you say "use both localhost and DNS name" what do you mean?

When you say "localhost" do you mean 127.0.0.1 or "the machine
I'm
logged-into right now"?

I have DNS resollution as below.


server.lbg.com --> localhost


Is that a CNAME record?

nslookup server.lbg.com (localhost)

Name:    server.lbg.com
Address:  192.168.100.20
alias: example.lbg.com


That's a weird DNS response. The DNS name "localhost" should

*always*

return 127.0.0.1 for IPv4 and ::1 for IPv6. It shouldn't return
191.168.100.20.

We have working the below urls working:

https://server.lbg.com:8443/towl
https://example.lbg.com:8443/towl --> redirects to


What do you mean "redirect"? Does it return a 30x response that

causes

the

browser to make a new request to \/

https://server.lbg.com:8443/towl  --> still works --> we have
SSL

configured for the same but this SSL certificate doesnot have

additional

DNS setup.


What SANs are in your certificate? How many certificates do you

have?


But I would need to somehow  access https://example.lbg.com -->

which

means
I would need to access via 443 here ?


I'm so confused. What needs to access what?

I tried to adding the below to  server.xml as below, but that

doesnot

seems

to work.

              <Connector port="80"
protocol="org.apache.coyote.http11.Http11NioProtocol"
                     connectionTimeout="20000"
                     redirectPort="443" />


This will only redirect (HTTP 302) requests to

http://yourhost/anything

to https://yourhost/anything *if the application specifically

requests

CONFIDENTIAL transport*. It doesn't just redirect everything by

default. If

you want it to redirect everything, you'll need to set that up

e.g.

using

RewriteValve. There are other options, too.

Do i need additional SSL certificate for the

https://example.lbg.com

to

make it work ?


If you don't want your browser to complain, you will need at
least

one

TLS

certificate that contains every Subject Alternative Name (SAN)
for

every

possible hostname you expect to use with this service. You ca do

it

with

multiple certificates as well, but a single cert with multiple

SANs

is

less

work.

Do i need to set up an additional web server for this like apache

or

nginx

for redirecting requests?


No.

Please stop saying "redirect" because it sounds like you almost

never

mean

"HTTP 30x redirect" and that's confusing everything.

I *think* you only need the following:

1. A TLS certificate with the following SANs:

           * server.lbg.com
           * example.lbg.com
           * localhost (you shouldn't do this)

2. DNS configured for all hostnames:

           * server.lbg.com -> A 192.168.100.20
           * example.lgb.com -> A 192.168.100.20

3. Tomcat configured with a single <Host> which is the default

virtual

host. Note that this is the *default Tomcat configuration* and

doesn't

need

to be changed from the default.

4. Tomcat configured with your certificate like this:

            <Connector ...
               SSLEnabled="true">
              <SSLHostConfig>
                <Certificate
                    certificateFile="/path/to/your/cert.crt"
                    certificateKeyFile="/path/to/your/key.pem" />
                <!-- You may need certificateKeyPassword in

<Certificate>

-->

              </SSLHostConfig>
            </Connector>

If your SANs are configured properly, this should allow you to

connect

using any of these URLs:

$ curl https://server.lbg.com/towl/login.jsp

           (returns login page)

$ curl https://example.lbg.com/towl/login.jsp

           (returns login page)

If your application's web.xml contains something like this:

           <security-constraint>
             <web-resource-collection>
               <web-resource-name>theapp</web-resource-name>
               <url-pattern>/*</url-pattern>
             </web-resource-collection>
             <user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

             </user-data-constraint>
           </security-constraint>

... then these URLs insecure HTTP URLs should redirect your

clients:


$ curl http://server.lbg.com/towl/login.jsp

           (returns HTTP 302 redirect to

https://server.lbg.com/towl/login.jsp

)


$ curl https://server.lbg.com/towl/login.jsp

           (returns HTTP 302 redirect to

https://example.lbg.com/towl/login.jsp)


I don't think you need any use of the RewriteValve unless you
want

to

handle sending HTTP 302 redirect responses to insecure requests

without

specifying the CONFIDENTIAL transport-guarantee in your

application's

web.xml file. But I don't see any reason NOT to have that in

there.


-chris

On Tue, Apr 23, 2024 at 10:52 PM Christopher Schultz <

ch...@christopherschultz.net> wrote:

Lavanya,


On 4/22/24 05:21, lavanya tech wrote:

Could you please explain, what you exactly mean ? So here

redirect

is


not a

solution right ?


Redirecting is fine.

Perhaps you should take a step back and decide: what do you

actually

want, here? You might be trying to solve problem X by applying

solution

Y, and you've already decided that solution Y is correct so you

are

trying to get help with that.

Perhaps ask for help with Problem X?

For example, "I don't want users to have to type the name of my
application to reach it so I want example.com/ to go to my

application

instead of example.com/myapp/".

Or, "I have multiple domains and I want all of them to redirect

to

the

canonical domain example.com and to go to me web application

/myapp

so

everything goes to example.com/myapp/".

"You'd have to use a glob/regex if

you wanted to check for [anything and maybe nothing.]

example.com

."



There is nothing in your configuration or question that suggests

that

the hostname in the request is relevant, but you are making it a
*requirement* that the request contains a specific Host header.

IF

you

don't actually need that, why do you have it?

-chris

On Fri, Apr 19, 2024 at 3:03 PM Christopher Schultz <

ch...@christopherschultz.net> wrote:

Ammu,


On 4/19/24 08:32, lavanya tech wrote:

Thank you very much. I removed <Host> for example.com as

well

as


adding


an


<Alias> in server.xml
I copied context.xml file

/git/app/apache-tomcat-10.1.11/webapps/towl/META-INF/context.xml

Removed < in rewrite.config files.

But still I dont redirect the URL.


If you have <Context> in server.xml and also your application

in

the

webapps/ directory, then you will be double-deploying your

application.


Re-name /git/app/apache-tomcat-10.1.11/webapps/towl/ to be
/git/app/apache-tomcat-10.1.11/webapps/ROOT (the capitals are
important)
and remove the <Context> element from your server.xml.

Then start your server and read the logs.

*nslookup alias.example.com <http://alias.example.com>

gives-->Non-authoritative answer:Name:     www.example.com
<http://www.example.com>Address:  192.168.200.10Aliases:

alias.example.com

<http://alias.example.com>*


Just to give some information here, *www.example.com
<http://www.example.com>* has alias* "alias.example.com
<http://alias.example.com>"*
But https://www.example.com:7777/example --> works fine with

out


issues


but


the alias doesnot works (https://alias.example.com)
So i am not sure if the redirect url helps or if its correct


Your rewrite configuration says that you have to be using host
"example.com" but your request goes to www.example.com. Your
configuration should only redirect a request such as:

$ curl -v http://example.com:7777/something

HTTP/1.1 301 Moved Permanently
...
Location: https://www.example.com:7777/example

If you make a request like:

$ curl -v http://www.example.com:7777/something

I wouldn't expect a redirect because of your "host" condition.

The

"%{HTTP_HOST} example.com" looks at the entire Host header

and

not

just
anything that ends in "example.com". You'd have to use a

glob/regex if

you wanted to check for [anything and maybe nothing.]

example.com.


You'd also have to make sure that your application is serving

responses

to requests to / which is why I'm recommending you use the

ROOT

web

application name instead of "towl".

-chris

On Fri, Apr 19, 2024 at 1:21 PM Christopher Schultz <

ch...@christopherschultz.net> wrote:

Ammu,


On 4/18/24 09:34, lavanya tech wrote:

I am attaching server.xml and context.xml and

rewrite.config

files.

The paths are

/git/app/apache-tomcat-10.1.11/webapps/towl/context.xml
<Context>
                 <Valve

className="org.apache.catalina.valves.rewrite.RewriteValve"


/>


                 <!-- Other context configuration -->
</Context>


This file ^^^ is in the wrong place. It should be in

/git/app/apache-tomcat-10.1.11/webapps/towl/META-INF/context.xml




/git/app/apache-tomcat-10.1.11/webapps/towl/WEB-INF/rewrite.config


<RewriteCond %{HTTP_HOST} example.com [NC]
<RewriteRule ^/(.*)$ https://www.example.com:7777/example

[R=301,L]



Why do you have < symbols at the beginning of these lines?

server.xml


             > [...]



                   <Host name="example.com" appBase="webapps"

unpackWARs="true"


autoDeploy="true">

                       <Context path="" docBase="towl" />


It's best not to define any <Context> in server.xml. I would

remove


this


<Context> entirely and allow Tomcat to auto-reploy from your

webapps/towl directory. If you need this application to be

deployed

as
the ROOT context (on / and not /towl) then you should

re-name

/git/app/apache-tomcat-10.1.11/webapps/towl to
/git/app/apache-tomcat-10.1.11/webapps/ROOT

You also don't need a <Host> for example.com as well as

adding

an

<Alias> for the same domain (though this is probably to

anonymize the





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to