Điểm:0

Nginx không nghe trên các cổng mới với systemctl tải lại nginx sau khi thêm cấu hình với một cổng mới

lá cờ vn

Không chắc chắn làm thế nào để nhanh chóng tóm tắt vấn đề này, vì vậy tôi sẽ đưa kịch bản của mình vào các gạch đầu dòng:

  • Cài đặt nginx cơ bản bình thường
  • Mình chỉ dùng https(443) nên xóa hết cấu hình http(80)
  • Khi bạn bắt đầu nginx (hoặc khởi động lại nó), quá trình dường như cũng lắng nghe trên cổng 80 (ss -tulp)
  • Khi tôi thêm một cấu hình trong /etc/nginx/sites-enabled với một người nghe trên http(80) và sau đó;
  • Tải lại nginx, sử dụng systemctl tải lại nginx (lưu ý: tải lại, không khởi động lại)
  • Nó không hoạt động, như thể nginx vẫn không lắng nghe lưu lượng truy cập trên cổng 80
  • nếu tôi chạy systemctl khởi động lại nginx nó hoạt động.

Tôi nhận thấy điều này vì LetsEncrypt không thể gia hạn chứng chỉ của tôi. Sau khi điều tra vấn đề, tôi nhận thấy hành vi được mô tả ở trên.
Bởi vì tôi không nghe cấu hình nginx trên http(80), tôi nghĩ nginx không thêm bất kỳ trình nghe nào hoặc thứ gì đó khi tôi bắt đầu nginx (mặc dù cổng 80 đã được nginx xác nhận quyền sở hữu)
Và nếu Certbot sau đó cố gắng gia hạn chứng chỉ của tôi, thì nó sẽ thêm cấu hình http(80) tạm thời vào thư mục cấu hình nginx, có lẽ theo sau là "tải lại" nginx, thay vì khởi động lại (đúng như mong đợi và nên làm)
Nhưng kể từ khi nginx là đã bắt đầu không có cấu hình http(80), nó không xử lý lưu lượng từ LetsEncrypt đến cấu hình thử thách tạm thời đó.
Giải pháp của tôi khá đơn giản, để thêm khối cấu hình http(80) cơ bản vào nginx chỉ với một trả lại 404;khởi động lại nginx. Sau đó, Certbot hoạt động tốt và có thể gia hạn tất cả các chứng chỉ của tôi.

Tôi đã tự hỏi liệu đây có phải là hành vi dự kiến ​​hay đây là lỗi (đã biết) trong Nginx.

Cảm ơn

Cập nhật:

phiên bản nginx: nginx/1.18.0
Debian 11 (Mắt bò)
lá cờ cn
Bạn cần chia sẻ cấu hình thực tế của mình để chúng tôi có thể trợ giúp việc này.
Jesse avatar
lá cờ vn
@ shearn89 không chắc cấu hình của tôi sẽ giúp ích như thế nào. Bởi vì bản thân cấu hình dường như không liên quan, nên việc thiếu cấu hình dường như gây ra sự cố. Nếu tôi không có cấu hình lắng nghe trên cổng 80 và sau đó nếu tôi thêm cấu hình cho cổng 80 (không quan trọng là cấu hình nào) thì quá trình tải lại dịch vụ sẽ không xảy ra lỗi, nhưng nó cũng không nghe trên cổng 80. Tôi phải khởi động lại dịch vụ trước khi cấu hình hoạt động. Trong khi thông thường tải lại là đủ.
lá cờ cn
Bạn nói rằng bạn đã 'xóa tất cả cấu hình http (80)' và sau đó 'thêm cấu hình vào ...'. Cố gắng đoán xem cấu hình của bạn trông như thế nào từ mô tả của bạn rất khó và dễ bị lỗi. Nếu bạn thêm nó vào câu hỏi, chúng tôi có thể cho bạn biết liệu đó có phải là lỗi cấu hình sai trong Nginx hay không.
Jesse avatar
lá cờ vn
Vâng, vấn đề là nó không hoạt động như mong đợi khi tôi không cung cấp cấu hình đó. Với cấu hình đó, nó hoạt động, vì vậy một lần nữa, không chắc việc cung cấp cấu hình sẽ giúp ích như thế nào. Nhưng như tôi đã nói trong bài viết gốc, cấu hình của tôi chỉ là trả về 404; nghe 80; tên máy chủ _; trả lại 404;
Điểm:0
lá cờ cn

Tôi không nghĩ đây là một lỗi, tôi nghĩ đây là điều gì đó không ổn ở phía bạn. Tôi không thể tạo lại vấn đề của bạn.

Tôi đã tạo một phiên bản EC2 mới với Amazon Linux và đã cài đặt nginx.

Đã nhận xét máy chủ http, https không ghi chú và các chứng chỉ được tạo:

#    người phục vụ {
#nghe80;
# nghe [::]:80;
#        tên máy chủ  _;
# gốc /usr/share/nginx/html;
#
# # Tải tệp cấu hình cho khối máy chủ mặc định.
# bao gồm /etc/nginx/default.d/*.conf;
#
#lỗi_trang 404 /404.html;
# vị trí = /404.html {
# }
#
# lỗi_trang 500 502 503 504 /50x.html;
# vị trí = /50x.html {
# }
# }

    người phục vụ {
        nghe 443 ssl http2;
        nghe [::]:443 ssl http2;
        tên máy chủ  _;
        gốc /usr/share/nginx/html;

        ssl_certificate "/etc/pki/nginx/cert.pem";
        ssl_certificate_key "/etc/pki/nginx/key.pem";
        ssl_session_cache được chia sẻ:SSL:1m;
        ssl_session_timeout 10 phút;
        # ssl_ciphers HỒ SƠ=HỆ THỐNG;
        # ssl_prefer_server_ciphers bật;

        # Tải tệp cấu hình cho khối máy chủ mặc định.
        bao gồm /etc/nginx/default.d/*.conf;

        lỗi_trang 404 /404.html;
            vị trí = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            vị trí = /50x.html {
        }
    }

Chứng chỉ:

[root@ip-10-0-0-110 nginx]# ls -l /etc/pki/nginx/
tổng số 8
-rw-r--r-- 1 nginx nginx 2155 ngày 4 tháng 2 09:28 cert.pem
-rw-r--r-- 1 nginx nginx 3272 ngày 4 tháng 2 09:28 key.pem

Khởi động máy chủ và cổng 80 không được sử dụng, nhưng 443 là:

[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':80'
[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':443'
tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:* người dùng:(("nginx",pid=32264,fd=6),("nginx",pid=32262,fd=6),("nginx", pid=32205,fd=6))
tcp LISTEN 0 511 [::]:443 [::]:* người dùng:(("nginx",pid=32264,fd=7),("nginx",pid=32262,fd=7),("nginx ",pid=32205,fd=7))

Bỏ ghi chú HTTP và thực hiện systemctl tải lại nginx, và cả hai đều đang được sử dụng:

[root@ip-10-0-0-110 nginx]# vim /etc/nginx/nginx.conf
[root@ip-10-0-0-110 nginx]# systemctl tải lại nginx
[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':443'
tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:* người dùng:(("nginx",pid=32288,fd=6),("nginx",pid=32287,fd=6),("nginx", pid=32205,fd=6))
tcp LISTEN 0 511 [::]:443 [::]:* người dùng:(("nginx",pid=32288,fd=7),("nginx",pid=32287,fd=7),("nginx ",pid=32205,fd=7))
[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':80'
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* người dùng:(("nginx",pid=32288,fd=13),("nginx",pid=32287,fd=13),("nginx", pid=32205,fd=13))
tcp LISTEN 0 511 [::]:80 [::]:* người dùng:(("nginx",pid=32288,fd=14),("nginx",pid=32287,fd=14),("nginx ",pid=32205,fd=14))
[root@ip-10-0-0-110 nginx]#

Bình luận và tải lại, chỉ có 443 là nghe.

Phiên bản đã cài đặt:

[root@ip-10-0-0-110 nginx]# danh sách yum nginx
Các plugin đã tải: extras_suggestions, langpacks, priority, update-motd
Gói đã cài đặt
nginx.x86_64 1:1.20.0-2.amzn2.0.4
Jesse avatar
lá cờ vn
À, quên đề cập đến phiên bản của tôi: "phiên bản nginx: nginx/1.18.0" trên Debian 11. Tôi sẽ kiểm tra xem tôi có thể sao chép nó khi cài đặt mới không. Có lẽ nó được giải quyết trong 1.20

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