Điểm:0

Làm cách nào tôi có thể định cấu hình máy chủ nginx của mình để chấp nhận các tên miền phụ khác nhau và cả cổng?

lá cờ mx

Tôi có một máy chủ chạy trên Ubuntu/Nginx. Tôi có các tên miền phụ chạy từ các cổng nội bộ khác nhau. Tôi muốn hiển thị một ứng dụng cho công chúng nhưng không liên kết ứng dụng đó với bất kỳ tên miền/máy chủ nào.

Dưới đây là tập tin cấu hình của tôi:

người phục vụ {
    server_name app.example.com www.app.example.com;
    access_log /home/hub-app/logs/app.example.com.access.log;
    
    địa điểm / {
        proxy_set_header Máy chủ lưu trữ $host;
        proxy_pass http://127.0.0.1:8082;
        proxy_redirect tắt;
        proxy_set_header Nâng cấp $http_upgrade;
        'nâng cấp' kết nối proxy_set_header;      
        proxy_cache_bypass $http_upgrade;       
        proxy_http_version 1.1;     
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme; 
    }

    nghe 443 ssl; 
    ssl_certificate /etc/letsencrypt/live/app.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/app.example.com/privkey.pem;
    bao gồm /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;


}   

người phục vụ {
    server_name example.com www.example.com;
    access_log /home/hub-public/logs/example.com.access.log;
    
    địa điểm / {
        proxy_set_header Máy chủ lưu trữ $host;
        proxy_pass http://127.0.0.1:8081;
        proxy_redirect tắt;
        proxy_set_header Nâng cấp $http_upgrade;
        'nâng cấp' kết nối proxy_set_header;      
        proxy_cache_bypass $http_upgrade;       
        proxy_http_version 1.1;     
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme; 
    }

    nghe 443 ssl;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 
    bao gồm /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 

}

Ở trên hoạt động tốt và trỏ đến các miền được chỉ định, ví dụ: example.com và app.example.com. Bây giờ tôi muốn thêm một máy chủ ảo khác để chạy tại MY_PUBLIC_IP:8080. Cổng 8080 không thể truy cập được trên các miền khác, tức là example.com:8080/app.example.com:8080 không nên có sẵn.

djdomi avatar
lá cờ za
sử dụng như server_name ip
Điểm:0
lá cờ ru

Bạn có thể dùng default_server.

Nginx sẽ khai báo máy chủ đó là máy chủ mặc định. Sau đó, Nginx sẽ sử dụng máy chủ mặc định để xử lý các yêu cầu khi tiêu đề Máy chủ HTTP của chúng không khớp với bất kỳ khối máy chủ nào khác.

default_server trong Nginx là gì

Ví dụ:

người phục vụ {
    nghe 8080 default_server;
    
    gốc/www/mặc định;
        
    địa điểm / {
        chỉ số index.html;
    }
}


Tôi sử dụng nó cho các bot máy quét honeypot và truyền cho chúng một số biểu tượng cảm xúc ị nếu chúng đang tìm kiếm phpAdmin hoặc bất kỳ thứ gì tương tự :)

Điểm:0
lá cờ gr

Tôi không nghĩ câu trả lời @Klamberext thực sự trả lời câu hỏi. Nghĩa là, máy chủ web nginx có một máy chủ mặc định Ý tưởng. Trang tài liệu chính thức về chủ đề này có thể được tìm thấy ở đây: Cách nginx xử lý yêu cầu. Tuy nhiên, một trong các khối máy chủ lắng nghe trên một số tổ hợp cổng/giao diện mạng sẽ luôn hoạt động như một tổ hợp mặc định. Nếu bạn không chỉ định khối máy chủ đó một cách rõ ràng, thì đó sẽ là khối máy chủ đầu tiên trong cấu hình của bạn. Điều đó có nghĩa là máy chủ của bạn chặn với server_name app.example.com www.app.example.com; dòng sẽ là khối máy chủ mặc định cho bất kỳ yêu cầu nào đến trên cổng 443 TCP, phục vụ bất kỳ yêu cầu nào khi HTTP Chủ nhà tiêu đề sẽ không phù hợp ví dụ.com hoặc www.example.com (hoặc nếu không có Chủ nhà tiêu đề nào cả).

Như @Klamberext đã nói, một thực tế phổ biến là xác định một khối máy chủ sơ khai để nắm bắt tất cả các yêu cầu trong đó Chủ nhà Tiêu đề HTTP không khớp với bất kỳ miền nào bạn đang phục vụ. Bạn có thể xem một ví dụ tại cái này Vì vậy câu trả lời. Thông thường, một khối máy chủ như vậy chứa trả lại 444; là mã trả về nginx đặc biệt để đóng kết nối ngay lập tức.Tuy nhiên, có vẻ như bạn cần thứ gì đó ngược lại và bạn sẽ cần hai khối máy chủ để hoàn thành nó, vì như đã nói, một khối máy chủ duy nhất lắng nghe trên cổng TCP 8080 sẽ hoạt động như khối mặc định cho dù đó là gì. Chủ nhà tiêu đề được đặt thành:

người phục vụ {
    nghe 8080 ;
    server_name example.com www.example.com app.example.com www.app.example.com;
    trả lại 444;
}
người phục vụ {
    nghe 8080 default_server;
    ... cấu hình của bạn ở đây
}

Thay vào đó, bạn có thể kiểm tra Chủ nhà giá trị tiêu đề bên trong khối máy chủ của bạn, ví dụ để chặn một ví dụ.com tên miền và bất kỳ tên miền phụ nào của nó:

người phục vụ {
    nghe 8080 ;
    if ($http_host ~ \.?example\.com$) { return 444; }
    ... cấu hình của bạn ở đây
}

Đă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.