我的服务器有3个网站:
由于DNS无法处理端口号,因此如何根据用户提供的URL重定向到端口,例如:
我看到了一些有关代理或反向代理的帖子,但是我不确定这是否是进行下一步的好方法
答案 0 :(得分:0)
在可公开访问的Internet中,HTTP流量应通过端口80(或通过HTTPS在端口443上运行的TLS)。从理论上讲,您可以在任何端口上使用HTTP,但这很容易出错,并且并非所有的机器都支持,因此不建议在生产中使用。因此,您不应将流量从subdomain.domain.extension
重定向到domain.extension:port
。
相反,您有两种解决方案:
这三台服务器在三个IP后面运行:每个子域都有一个IP地址。每个服务器都在其自己的IP之后运行。您的DNS服务器应该为每个域名-IP地址关联发送记录。
反向代理:每个子域都使用相同的IP。该IP的后面运行着第四个服务器-代理。它的简单任务是查看路径中的子域,并将HTTP(S)通信重新路由到与其连接的相应应用程序(gitlab,react或jorani)。请注意,这三个应用程序均无法从公共互联网直接访问。
答案 1 :(得分:0)
这是我正在使用的解决方案:
我将gitlab端口更改为8900。 我将Apache端口更改为80。
我现在将虚拟主机与Apache配合使用:
对于/ etc / httpd / sites-available /
中的CentOS 7gitlab.conf:
<VirtualHost gitlab.mydomain.intra:80 >
ServerName gitlab.mydomain.intra
ProxyPreserveHost On
ProxyRequests On
ProxyPass / http://localhost:8900/
ProxyPassReverse / http://localhost:8900/
</VirtualHost>
react.conf:
<VirtualHost react.mydomain.intra:80 >
ServerName react.mydomain.intra
ProxyPreserveHost On
ProxyRequests On
ProxyPass / http://localhost:3001/
ProxyPassReverse / http://localhost:3001/
</VirtualHost>
jorani.conf:
<VirtualHost jorani.mydomain.intra:80 >
ServerName jorani.mydomain.intra
ProxyPreserveHost On
ProxyRequests On
ProxyPass / http://localhost:80/jorani
ProxyPassReverse / http://localhost:80/jorani
</VirtualHost>
问题:我无法通过SSL(gitlab.mydomain.intra => https://gitlab.mydomain.intra/)使它适用于gitlab。找到解决方案后,就会发布解决方案。
编辑: 这是使用https的gitlab的解决方案:
/etc/gitlab/gitlab.rb:
external_url 'https://gitlab.mydomain.com/'
nginx['enable'] = true
nginx['redirect_http_to_https'] = true
nginx['listen_addresses'] = ['localhost']
nginx['listen_port'] = 8888
nginx['listen_https'] = false
/etc/httpd/sites-available/gitlab.conf
<VirtualHost gitlab.mydomain.intra:80>
ServerName gitlab.mydomain.intra
ErrorLog /var/log/httpd/gitlab.mydomain.intra/error.log
Redirect 301 / https://gitlab.mydomain.intra/
</VirtualHost>
<VirtualHost gitlab.mydomain.intra:443>
ServerName gitlab.mydomain.intra
ErrorLog /var/log/httpd/gitlab.mydomain.intra/error.log
RequestHeader set Host "gitlab.mydomain.intra"
#RequestHeader add X-Forwarded-Ssl on
#RequestHeader set X-Forwarded-For %<span class="pl-s1"><span class="pl-pse">{</span>REMOTE_ADDR<span class="pl-$
#RequestHeader set X-Forwarded-Proto "https"
ProxyPreserveHost On
ProxyPass / http://localhost:8888/
ProxyPassReverse / http://localhost:8888/
SSLEngine On
SSLCertificateFile /etc/gitlab/ssl/gitlab.mydomain.intra.crt
SSLCertificateKeyFile /etc/gitlab/ssl/gitlab.mydomain.intra.key
</VirtualHost>