好吧,我似乎无法得到它,我检查了nginx论坛,也没有太多的帮助。 我认为这将是简单的。 我想定义的子域名转到不同的url/端口。 即
DNS site.com goes to 192.168.1.1 w/ masking DNS www.site.com goes 192.168.1.1 w/ masking DNS red.site.com goes 192.168.1.1 w/ masking DNS blue.site.com goes to 192.168.1.1 w/ masking
我希望site.com和www.site.com正常运行,但我想red.site.com去192.168.1.2:5000和blue.site.com去192.168.1.2:6000/temp/
等等等等……我甚至不确定我在意地址栏中显示的是什么,我想如果它保持在red.site.com,它会很好,但这并不重要。 我试过一个代理传递一个URL重写,显然我做错了什么。 这甚至有可能吗?
你有没有试过Proxy Pass指令?
有类似的东西
server { server_name red.site.com; location / { proxy_pass http://192.168.1.2:5000; } } server { server_name blue.site.com; location / { proxy_pass 192.168.1.2:6000/temp/; } }
应该管用。 看文件的东西,如标题转发等…
根据需要创建尽可能多的虚拟服务器。 检入/etc/nginx/sites-available
并将default
服务器复制到red
…(或者你的配置在这里)。 然后去/etc/nginx/sites-enabled
并做一个符号链接
ln -s ../sites-available/red
并为其他服务器( 蓝色 …),然后重新启动nginx或killall -HUP nginx
重新加载配置。
基本上在一个虚拟服务器,你给任何配置是特定于该服务器。
例如, red
server { listen 5000; server_name red.site.com; root /var/www/docs/red; ... }
或为blue
(注意temp
添加到根目录 )
server { listen 6000; server_name blue.site.com; root /var/www/docs/somewhere/temp; ... }
如果您还需要指定IP,请执行
listen 192.168.1.2:5000;
red
,或6000 blue
。
一些解释指令的文献。
你应该创建该文件,如果它不存在:
/etc/nginx/conf.d/servers.conf
并用代理设置填充它。 例如:
server { listen 80; server_name red.site.com; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 150; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffers 4 32k; client_max_body_size 8m; client_body_buffer_size 128k; } }