在这种特殊情况下,我可以使用Nginx作为反向代理吗?

爱德华多·费尔南德斯·迪亚兹(Eduardo A.

我需要知道是否有可能使用Nginx作为反向代理来服务在不同的Raspberry Pi中托管的每个Web应用程序。

从图中可以看出,Raspberry将全部连接到非托管交换机,这是我打算安装nginx的第一个交换机,因此它可以用作反向代理,具体取决于互联网请求的网站。例如:wwww.site1.com,www.site2.www等

这可能吗?我能否从连接到调制解调器而不是交换机的计算机上访问那些RPis?

注意:调制解调器是wifi调制解调器,并且该交换机是不受管理的有线交换机。

很抱歉,我的绘画技巧很差,感谢您的帮助。在购买所有这些东西之前,我需要知道这种想法是否可行。

在此处输入图片说明

阿特姆·布达耶夫

我认为有可能,但是有一些要求:

  • 分配给调制解调器的静态外部IP;

  • RPi上的静态IP;

  • 正确的调制解调器转发规则。

我的意思是,您需要转发所有如下请求:

调制解调器:80-> rp0:80

调制解调器:443-> rp0:443

在rp0上,端口可能不同于80和443,因此,请设置正确的规则,并在nginx config中进行记录。

之后,设置上游或在网站配置中使用rp1-3的IP:

upstream rp1 {
    server 192.168.1.11:port;
}
upstream rp2 {
    server 192.168.1.12:port;
}
upstream rp3 {
    server 192.168.1.13:port;
}

port替换为port,在适当的RPi上侦听该port。网站配置将如下所示:

server {
server_name site1.com www.site1.com ;
location / { proxy_pass http://rp1 ; }
}
server {
server_name site2.com www.site2.com ;
location / { proxy_pass http://rp2 ; }
}

添加您需要的任何参数。另外,如果您要托管一些静态网站,最好的方法就是将它们放置在rp0上。

编辑1工作配置示例:

server {
listen 80;
server_name site1.com www.site1.com ;
location / { rewrite ^ https://$host$request_uri permanent;}
}

server {
listen              443 ssl;
server_name         site1.com www.site1.com;

ssl_certificate     /etc/letsencrypt/live/site1/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site1/key.pem;
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         HIGH:!aNULL:!MD5;
location / {
    proxy_pass              http://rp1;
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-for $remote_addr;
    port_in_redirect        off;
    proxy_redirect          http://rp1/ /;
}

请注意,如果要使用Letsencrypt,最好的方法是在rp0上设置certbot(或其他)。自动续订证书会更容易。另外,使用/etc/letsencrypt/live/site1/fullchain.pem为了使用多个SSL域,请确保安装Nginx支持SNI:

# nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以在这种情况下使用枚举吗?

我应该避免在现代C ++中引用指针还是在这种特殊情况下还可以

为什么在这种特殊情况下我不需要模板参数?

在这种特定情况下,我们可以使用android数据绑定替换findViewById()吗?

Angular:在这种特殊情况下使用ng-change的正确方法是什么?

在这种特殊情况下,使用async-pipe代替subscribe()真的更好吗?

在这种特殊情况下如何使用 read_table 或 fread?

在这种情况下可以使用事件委托吗?

我可以在这种情况下使用swift通用

我可以在这种情况下避免使用纯纯虚函数吗?

在这种情况下我可以正确使用flex吗?

在这种情况下,是否可以使用正则表达式查找特殊的子字符串?

shared_ptr,unique_ptr,所有权,在这种特殊情况下我是否过分使用?

Perl:在这种特殊情况下,哈希不允许使用字母数字键

在这种特殊情况下,如何使用地理编码获取公司的正确位置?(Python,Google API)

在这种特殊情况下,如何在单击 jquery 事件时运行它?

为什么在这种特殊情况下数据类型会影响性能?

在这种特殊情况下如何避免嵌套 for 循环?

为什么在这种特殊情况下git恢复后会出现冲突

JavaScript,在这种特殊情况下立即调用的功能是什么?

在这种特殊情况下,静态数组的速度慢700倍是否合理?

FMX:为什么在这种特殊情况下 TTextLayout.RegionForRange 会失败?

在这种特殊情况下如何消除区分大小写?

在这种特殊情况下,字符串size()函数与strlen之间的区别

在这种特殊情况下,如何使该网络正常工作?

在特殊情况下:&比%快吗?

试图找到这种特殊情况下的正则表达式?还可以在不创建组的情况下进行解析吗?

在这种情况下可以实现hashCode()方法吗?

在这种情况下可以重写ToString()方法吗