需求:我的電腦裡裝了兩個虛拟機。一個是nat加host-only網絡環境,一個是‘nat網絡’網絡環境。host-only的網絡的虛拟機(後文簡稱A)裡在80端口提供兩個網站服務:homestead.test和ruanwenwu.com.cn。nat網絡的虛拟機(後文簡稱B)裡在80端口提供一個網站服務:rocky.com。我現在希望我的區域網路中的其他電腦能通路我電腦裡的這三個服務。
解決方案:使用nginx做端口轉發。
一、網絡環境
A的網絡:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::a00:27ff:fe9e:e528 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:9e:e5:28 txqueuelen 1000 (Ethernet)
RX packets 32281 bytes 36852695 (36.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12531 bytes 1588799 (1.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::a00:27ff:fee0:1b57 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:e0:1b:57 txqueuelen 1000 (Ethernet)
RX packets 28364 bytes 5341677 (5.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 55262 bytes 111451643 (111.4 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 12857 bytes 4268810 (4.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12857 bytes 4268810 (4.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
A有兩個網卡,一個是NAT的,一個是Host-only的。192.168.10.10是host-only的位址。
B的IP是10.0.0.3,映射80端口到我本機(macbook)8080端口。
二、nginx配置
worker_processes 1;
events {
worker_connections 1024;
}
http{
upstream rww{
server 127.0.0.1:8080;
}
upstream ruanwenwu{
server 192.168.10.10:80;
}
server {
listen 80;
server_name rocky.com;
access_log logs/book.log;
error_log logs/book.error;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://rww;
}
}
server {
listen 80;
server_name ruanwenwu.com.cn;
access_log logs/movie.log;
error_log logs/movie.error;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ruanwenwu;
}
}
server {
listen 80;
server_name homestead.test;
access_log logs/movie.log;
error_log logs/movie.error;
location / {
proxy_set_header host $host;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_pass http://ruanwenwu;
}
}
}
三、本機Host配置
127.0.0.1 rocky.com
127.0.0.1 ruanwenwu.com.cn
127.0.0.1 homestead.test
四、總結
就是通過nginx開放本機的80端口給區域網路的使用者通路。然後再通過nginx的端口轉發功能将對應的請求轉發到對應的電腦上。同一台虛拟機上多個網站都采用80端口提供服務的,使用server_name來區分。
喜歡阿文的幫助,覺得這篇文章對你有幫助就給阿文一個免費的點贊、關注吧,謝謝支援~