我有一个Grails 4.0.10应用程序,我试图在端口443上运行,因为当使用443以外的其他端口时,端口号会像这样显示在URL栏中。
https://2.113.139.14:8443/
我可以让它在任何其他端口上运行,如8443或8445。
我刚把端口改成了8445。
我在application.yml中进行了更改:
server:
port: 8445 # The port to listen on
ssl:
enabled: true # Activate HTTPS mode on the server port
key-store: /home/runner/selfsigned.jks # e.g. /etc/tomcat7/keystore/tomcat.keystore
key-store-password: pepsicola # e.g. changeit
key-alias: tomcat # e.g. tomcat
key-password: pepsicola
在应用程序中。groovy
grails.plugin.springsecurity.portMapper.httpPort=8080
grails.plugin.springsecurity.portMapper.httpsPort=8445
production {
grails.logging.jul.usebridge = false
net.authorize.environment = net.authorize.Environment.PRODUCTION
net.authorize.formAction = net.authorize.Environment.PRODUCTION.baseUrl.toString() + '/gateway/transact.dll'
grails.insecureServerURL = "http://2.113.139.14:${grails.plugin.springsecurity.portMapper.httpPort}${grails.app.context}"
grails.serverURL = "https://2.113.139.14:${grails.plugin.springsecurity.portMapper.httpsPort}${grails.app.context}"
在Gradle版本中
bootRun {
ignoreExitValue true
jvmArgs(
'-Dspring.output.ansi.enabled=always',
'-Duser.timezone=US/Mountain',
'-Dgrails.server.port.https=8445',
'-Dgrails.server.port.http=8080',
// '-Dorg.apache.catalina.session.StandardSession.ACTIVITY_CHECK=true',
'-noverify',
'-XX:TieredStopAtLevel=1',
'-Xmx1024m')
sourceResources sourceSets.main
String springProfilesActive = 'spring.profiles.active'
systemProperty springProfilesActive, System.getProperty(springProfilesActive)
}
但是当我对443进行这样的更改时,它不起作用。
在application.yml中
server:
servlet:
context-path: '/roadrace'
port: 443 # The port to listen on
ssl:
enabled: true # Activate HTTPS mode on the server port
key-store: /home/runnercard/selfsigned.jks # e.g. /etc/tomcat7/keystore/tomcat.keystore
key-store-password: pepsicola # e.g. changeit
key-alias: tomcat # e.g. tomcat
key-password: pepsicola
在应用程序中。groovy
grails.plugin.springsecurity.portMapper.httpPort=8080
grails.plugin.springsecurity.portMapper.httpsPort=443
production {
grails.logging.jul.usebridge = false
net.authorize.environment = net.authorize.Environment.PRODUCTION
net.authorize.formAction = net.authorize.Environment.PRODUCTION.baseUrl.toString() + '/gateway/transact.dll'
grails.insecureServerURL = "http://2.113.139.14:${grails.plugin.springsecurity.portMapper.httpPort}${grails.app.context}"
grails.serverURL = "https://2.113.139.14:${grails.plugin.springsecurity.portMapper.httpsPort}${grails.app.context}"
在Gradle版本中
bootRun {
ignoreExitValue true
jvmArgs(
'-Dspring.output.ansi.enabled=always',
'-Duser.timezone=US/Mountain',
'-Dgrails.server.port.https=443',
'-Dgrails.server.port.http=8080',
// '-Dorg.apache.catalina.session.StandardSession.ACTIVITY_CHECK=true',
'-noverify',
'-XX:TieredStopAtLevel=1',
'-Xmx1024m')
sourceResources sourceSets.main
String springProfilesActive = 'spring.profiles.active'
systemProperty springProfilesActive, System.getProperty(springProfilesActive)
}
在服务器中,我使用以下命令将应用程序作为独立Java运行
java -Xmx6g -Dgrails.env=prod -Duser.timezone=US/Mountain -jar /home/runnercard/RCRoadRaceWeb4.jar
接下来我可以尝试什么?
1条答案
按热度按时间ilmyapht1#
你以前曾经发表过关于在Ubuntu上运行的文章,所以我猜现在仍然是这样。我不确定Windows上的端口规则。
端口1024及以下在大多数系统上都有特权,需要root访问才能侦听。有几个选项,其中 * 最糟糕 * 的是“以root身份运行应用程序”。这是一个糟糕的计划,可能会导致严重的安全错误配置。
相反,你可能想看看端口转发。假设你(或具有系统访问权限的人)拥有root权限,你可以轻松地将所有流量从一个端口(443)转发到另一个端口(8443)。
一旦设置好了,你需要将
grails.serverURL
属性设置为https://whatever/application(不带端口),这样就可以正确地生成完全限定的链接。