首先,我更像是一个开发者而不是pipe理者。 我在这里问了同样的问题。 但请让我知道是否有更好的地方来问这个问题。
这是我的情况。 我有一个应用程序是build立在Linux上运行。 它同时提供https(在使用nginx的端口443上)和ssh(在端口22上)。 但是由于组织的限制,我不得不使用虚拟框在Linux客户端的Windows主机上运行它。 此外,主机上还有另一个Web应用程序。 这两个Web应用程序都应该基于URL来提供服务(例如:app1.com,app2.com)。 url需要保留。 所有sshstream量都可以默认为guest。
我必须做出这个工作的一个想法是,下面我想知道是不是让这个问题变得更复杂。 任何帮助表示赞赏。
脚步:
问题:
- 我可以避免主机上额外的nginx反向代理,同时保留的URL?
- 还有什么关于SSL。 我可以在主机上设置https并将其路由到客户端的端口80,并避免拥有两个证书? 注意:我在Virtualbox中使用NAT,所以我不应该有任何安全问题。
这由Nginx 文档或任何Nginx 教程覆盖。 Nginx将绑定到任何需要的端口,使用SNI,它将使用proxy_pass ( 示例 )将不同域的请求发送到不同的服务器块/上游应用程序。 只需在Nginx中为每个域定义一个服务器块即可。
如果你想SSL尝试我的教程让我们encryption ,但应用程序必须公开访问。 为了那个原因。
回答你的问题。
下面的示例configuration。
server { server_name app1.com; listen 80; // add other listeners required location { // Insert proxy_pass and related statements } } server { server_name app2.com; listen 80; // add other listeners required location { // Insert proxy_pass and related statements } } // Example of forwarding server { server_name www.app1.com; listen 80; return 301 https://app1.com$request_uri; } // Example of SSL server { listen 443 ssl; server_name app1.com; ssl_certificate /var/lib/acme/certs/***CERT_DIRECTORY/fullchain; ssl_certificate_key /var/lib/acme/certs/***CERT_DIRECTORY/privkey; // Insert a location here and remove the 301 to server on SSL return 301 https://www.example.com$request_uri; }