Điểm:1

nginx Proxy Manager Custom Locations

lá cờ um

Ultimately I intend to configure nginx to proxy content from web services on different hosts. As currently set up I'm using nginx Proxy Manager with nginx in Docker containers. To exclude the complexities of web service setup from the issues of configuring the reverse proxy, I have set up web servers with static content.

  • I have Apache in a container on the same docker network as the nginx container.
  • I have IIS on my workstation.

As you can see from this grab I have nginx successfully set up to proxy my workstation's IIS (not to mention a public DNS entry for my external interface. That's working fine.

IIS proxied by nginx

These grabs show that the Apache container maps 80 to 8080 on the docker host which is imaginatively named dockerhost, and the browser on my workstation can access both the root document and another document by name.

apache root doc apache more doc

At this point I altered the nginx proxy host definition to define a custom location. Within the docker network Apache is on port 80; this is why I've specified 80 rather than 8080.

nginx proxy host definition custom location

This appears to work.

Browser loads apache root

...until you try to load some other resource from Apache but get the same content.

Trying to load something other than the root document

It appears that absolutely anything beginning with apache/ is mapped to the root document.

anycrap

At this point I went back and looked for documentation but failed to find anything relevant.

Swapping things around so that nginx proxies IIS and the custom location iis points at IIS on my workstation exhibits exactly the same problem, this time with IIS.

How should this configuration be expressed?

A Proxy Manager based answer is preferable, I have quite a bit to learn before I can use instructions on hacking the nginx config directly.

That said, for diagnostic use, here's the generated config.

# ---------------------------------------------
# wone.pdconsec.net
# ---------------------------------------------
server {
  set $forward_scheme http;
  set $server         "pnuc.lan";
  set $port           80;

  listen 80;
  listen [::]:80;
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name wone.pdconsec.net;

  # Let's Encrypt SSL
  include conf.d/include/letsencrypt-acme-challenge.conf;
  include conf.d/include/ssl-ciphers.conf;
  ssl_certificate /etc/letsencrypt/live/npm-1/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/npm-1/privkey.pem;

  access_log /data/logs/proxy-host-1_access.log proxy;
  error_log /data/logs/proxy-host-1_error.log warn;

  location /apache {
    set              $upstream http://apache:80/;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Scheme $scheme;
    proxy_set_header X-Forwarded-Proto  $scheme;
    proxy_set_header X-Forwarded-For    $remote_addr;
    proxy_set_header X-Real-IP      $remote_addr;
    proxy_pass       $upstream;

  }

  location / {
    # Proxy!
    include conf.d/include/proxy.conf;
  }

  # Custom
  include /data/nginx/custom/server_proxy[.]conf;
}
djdomi avatar
lá cờ za
xin chào, bất kỳ bảng quản trị nào cũng sẽ lạc đề. Tuy nhiên, tôi sẽ sử dụng Nginx làm liên hệ đầu tiên và sau đó để Nginx quyết định dựa trên cấu hình, nơi nó sẽ chuyển đến.
lá cờ um
Tôi có thể xem tệp cấu hình, nó nằm trong một ổ đĩa được ánh xạ trên dockerhost nhưng dường như tôi không có quyền chỉnh sửa.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.