Where does Jenkins.instance.rootUrlFromRequest get the address from? How can I reproduce that outside of Jenkins?
On Tuesday, 29 July 2014 22:26:24 UTC+1, Hansen Loke wrote: > > Ok, after the move again I ran the commands and now got: > > > http://my.machine.com:8080:8080/jenkins/http://my.machine.com:8080/jenkins/my.machine.com:8080 > null > > > > So it looks like with the change it some how introduced extra port in the > url. But if it's the port forwarding or reverse proxy issue then I would > have expected the problem to have existed before the move. Could there be > some configuration file that I have missed to update after moving to a > different location? > > > On Monday, 28 July 2014 22:22:26 UTC+1, Hansen Loke wrote: > >> I've reverted the move for now as there were some backlogs of builds to >> clear up. I've tried the commands in the reverted state and it gives: >> >> http://my.machine.com:8080/jenkins/ >> http://my.machine.com:8080/jenkins/ >> my.machine.com:8080 >> null >> >> I'll try the move again tomorrow with the commands. It is possible that >> reverse proxy is in place. The server has access to two vlans which may >> confuse things abit, but I was thinking that I'm just changing the location >> of where the Jenkins home is and running from different user that all other >> settings should just be the same. >> >> >> On Monday, 28 July 2014 18:14:07 UTC+1, Daniel Beck wrote: >>> >>> Run the following in Script Console and report the output: >>> >>> println Jenkins.instance.rootUrlFromRequest >>> println JenkinsLocationConfiguration.get().url >>> println >>> org.kohsuke.stapler.Stapler.currentRequest.getHeader('X-Forwarded-Host') >>> println >>> org.kohsuke.stapler.Stapler.currentRequest.getHeader('X-Forwarded-Port') >>> >>> Are you accessing Jenkins through a reverse proxy? >>> >>> On 28.07.2014, at 18:12, Hansen Loke <[email protected]> wrote: >>> >>> > The config is the same as before the move, so it's: >>> http://my.machine.com:8080/jenkins/ >>> > >>> > >>> > >>> > On Monday, 28 July 2014 17:08:23 UTC+1, Daniel Beck wrote: >>> > What's configured in Manage Jenkins » Configure System » Jenkins >>> Location » Jenkins URL? >>> > >>> > On 28.07.2014, at 12:08, Hansen Loke <[email protected]> wrote: >>> > >>> > > Hi, >>> > > >>> > > Recently I've moved the Jenkins installation to a different HDD >>> location on the same host, and to be started by a different user, reasons >>> for the move was that it was previously freeloading from another user. >>> After this move all *nix slave nodes connects fine but the windows jnlp >>> slave node doesn't come up anymore with the following errors in the slave >>> node logs: >>> > > >>> > > jenkins-slave.err.log: >>> > > >>> > > JNLP file >>> http://my.machine.com:8080/jenkins/computer/node01/slave-agent.jnlp?encrypt=true >>> >>> has invalid arguments: [<some_hex>, node01, -url, >>> http://my.machine.com:8080/jenkins/, -url, >>> http://my.machine.com:8080:8080/jenkins/, -headless, -jar-cache, >>> C:\.jenkins\cache\jars] >>> > > Most likely a configuration error in the master >>> > > "http://my.machine.com:8080:8080/jenkins/" is not a valid value for >>> "-url" >>> > > >>> > > >>> > > I had a look in the downloaded slave-agent.jnlp file from the >>> website and it has: >>> > > >>> > > <jnlp spec="1.0+" codebase=" >>> http://my.machine.com:8080/jenkins/computer/node01/"><information><title>Slave >>> >>> Agent for node01</title><vendor>Jenkins project</vendor><homepage href=" >>> https://jenkins-ci.org/"/></information><security><all-permissions/></security><resources><j2se >>> >>> version="1.5+"/><jar href=" >>> http://my.machine.com:8080/jenkins/jnlpJars/remoting.jar"/><property >>> name="hudson.showWindowsServiceInstallLink" >>> value="true"/></resources><application-desc >>> main-class="hudson.remoting.jnlp.Main"><argument>some_hex</argument><argument>node01</argument><argument>-url</argument><argument> >>> http://my.machine.com:8080/jenkins/</argument><argument>-url</argument><argument>http://my.machine.com:8080:8080/jenkins/</argument></application-desc></jnlp> >>> >>> >>> > > >>> > > The part where it is marked in bold font is the part where it is >>> complaining about, whereas before the move it didn't have this extra url. >>> > > >>> > > I then had a look at the Jenkins source code to see where did this >>> url come from: >>> > > >>> > > The file in >>> jenkins-master/core/src/main/resources/hudson/slaves/SlaveComputer/slave-agent.jnlp.jelly >>> >>> has this: >>> > > >>> > > <j:if test="${rootURL!=app.rootUrlFromRequest}"> >>> > > <!-- >>> > > rootURL is based on the URL in the system config, but >>> there has been >>> > > numerous reports about people moving Jenkins to another >>> place but >>> > > forgetting to update it. To improve the user experience >>> in this regard, >>> > > let's also pass the URL that the browser sent us as >>> well, so that the >>> > > JNLP Main class can try both. >>> > > >>> > > Note that rootURL is still necessary in various >>> situations, such >>> > > as reverse HTTP proxy situation, which makes >>> rootUrlFromRequest incorrect. >>> > > --> >>> > > <argument>-url</argument> >>> > > <argument>${app.rootUrlFromRequest}</argument> >>> > > >>> > > Thus, this means that somehow after the move the rootUrlFromRequest >>> is now different. Except now I'm lost where to find and correct the "root >>> URL from request" or where that is being set. >>> > > >>> > > After the move I've already grep and replaced paths in the Jenkins >>> setting that pointed to the old location. >>> > > >>> > > Any pointers to where I should look next? >>> > > >>> > > Cheers, >>> > > Hansen >>> > > >>> > > >>> > > >>> > > -- >>> > > You received this message because you are subscribed to the Google >>> Groups "Jenkins Users" group. >>> > > To unsubscribe from this group and stop receiving emails from it, >>> send an email to [email protected]. >>> > > For more options, visit https://groups.google.com/d/optout. >>> > >>> >>> -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
