【问题标题】:Serving sites on multiple ports with nginx使用 nginx 在多个端口上服务站点
【发布时间】:2017-12-18 21:35:24
【问题描述】:

现在正在寻找这个解决方案一段时间,并认为我已经很接近了,但是...... 所以我有 5 个不同的虚拟机在不同的端口上运行网页。为简洁起见,让我们说 8080 到 8484。我想让它们都监听 127.0.0.1 和它们各自的端口。我还希望 nginx 充当着陆页的 https 和密码保护前端,将用户重定向到这些内部站点。

server {
listen 443 ssl http2;
ssl_certificate /etc/nginx/ssl/home.crt;
ssl_certificate_key /etc/nginx/ssl/home.key;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
root /usr/share/nginx/html;
index index.html index.htm;
client_max_body_size 101M;
auth_basic "Login required";
auth_basic_user_file /etc/nginx/htpasswd;

    location /server1 {
    proxy_pass http://127.0.0.1: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;
}

    location /server2 {
    proxy_pass http://127.0.0.1:8181;
    proxy_set_header Host \$host;
    proxy_set_header X-Real-IP \$remote_addr;
    proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
}

....

因此,这将提示我输入用户,传递并重定向到托管在该端口上的相应页面,但我收到一条错误消息,指出 /server1 上的主机不允许使用无效的 HTTP_HOST 标头,因为 \127.0.0.1 无效。

这甚至可能吗?服务器运行各种框架,Django、Apache、Tomcat……

【问题讨论】:

  • 为什么要将反斜杠作为主机头的前缀?
  • Host = "Host" ":" host [ ":" port ]
  • 我需要一个 \ 前缀吗?
  • 那么如何正确设置代理头呢?不确定 GET 请求是什么样的。
  • 你不想要反斜杠。

标签: django nginx proxy


【解决方案1】:
    server {
listen 443 ssl http2;
ssl_certificate /etc/nginx/ssl/home.crt;
ssl_certificate_key /etc/nginx/ssl/home.key;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
root /usr/share/nginx/html;
index index.html index.htm;
client_max_body_size 101M;
auth_basic "Login required";
auth_basic_user_file /etc/nginx/htpasswd;

    location /server1/ {
    proxy_pass http://127.0.0.1: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;
}

    location /server2/ {
    proxy_pass http://127.0.0.1:8181/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

【讨论】:

    猜你喜欢
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多