Điểm:1

Proxy đảo ngược của Apache không hoạt động và tạo ra lỗi 404

lá cờ bl

Tôi có bản cài đặt Shiboleth chạy trên Cầu tàu 9. Thông qua Apache, tôi có một proxy ngược tới cổng 8080 của Cầu tàu phục vụ phiên bản Shiboleth.

Khi tôi cuộn tròn http://localhost:8080/idp/shibboleth trong bảng điều khiển, phiên bản phản hồi được tạo chính xác.

Tuy nhiên khi tôi làm điều tương tự trên trình duyệt của mình https://idp.example.com/idp/shibboleth Tôi gặp lỗi 404.

Đây là một số dấu hiệu cho thấy proxy ngược không hoạt động chính xác?

Đây là conf apache của tôi

SSLSử dụng Dập ghim bật
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderLỗi tắt
SSLStaplingCache shmcb:/var/run/ocsp(128000)

<Máy chủ ảo *:80>
Tên máy chủ "idp.spectrum.com.cy"
Chuyển hướng vĩnh viễn "/" "https://idp.spectrum.com.cy/"
</Máy chủ ảo>

<IfModule mod_ssl.c>
<Máy chủ ảo _default_:443>
 Tên máy chủ idp.spectrum.com.cy:443
 ServerAdmin [email protected]
 # Debian
 Nhật ký tùy chỉnh /var/log/Apache2/idp.spectrum.com.cy.log kết hợp
 ErrorLog /var/log/Apache2/idp.spectrum.com.cy.org-error.log
 # Centos
 #CustomLog /var/log/httpd/idp.example.org.log kết hợp
 #ErrorLog /var/log/httpd/idp.example.org-error.log
 
 DocumentRoot /var/www/html/idp.spectrum.com.cy
 
 Công cụ SSL Bật
 Giao thức SSL Tất cả -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
 SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+arSA+SHA384 EECDH+aRSA+SHA256 EECDH+arSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

 SSLHonorCipherĐặt hàng
 
 # Không cho phép nhúng trang đăng nhập IdP của bạn trong iframe và
 # Bật HTTP Strict Transport Security với thời hạn 2 năm
 <IfModule headers_module>
    Bộ tiêu đề X-Frame-Options TỪ CHỐI
    Bộ tiêu đề Strict-Transport-Security "max-age=63072000 ; includeSubDomains ; preload"
 </IfModule>
 
 # Debian
 SSLCertificateFile /etc/ssl/certs/idp.spectrum.com.cy.crt
 SSLCertificateKeyFile /etc/ssl/private/idp.spectrum.com.cy.key

 # ACME-CA hoặc GEANT_OV_RSA_CA_4 (Dành cho người dùng sử dụng GARR TCS/Sectigo RSA Máy chủ bảo mật xác thực tổ chức CA)
 #SSLCACertificateFile /etc/ssl/certs/ACME-CA.pem
 #SSLCACertificateFile /etc/ssl/certs/GEANT_OV_RSA_CA_4.pem


 # Centos
 #SSLCertificateFile /etc/pki/tls/certs/idp.example.org.crt
 #SSLCertificateKeyFile /etc/pki/tls/private/idp.example.org.key

 # ACME-CA hoặc GEANT_OV_RSA_CA_4 (Dành cho người dùng sử dụng GARR TCS/Sectigo RSA Máy chủ bảo mật xác thực tổ chức CA)
 #SSLCACertificateFile /etc/pki/tls/certs/ACME-CA.pem
 #SSLCACertificateFile /etc/pki/tls/certs/GEANT_OV_RSA_CA_4.pem

 <IfModule mod_proxy.c>
    ProxyPreserveHost Bật
    RequestHeader đặt X-Forwarded-Proto "https"
    ProxyPass /idp http://localhost:8080/idp/ thử lại=5
    ProxyPassReverse /idp http://localhost:8080/idp/ thử lại=5

    <Vị trí /idp>
       Yêu cầu tất cả cấp
    </Vị trí>
 </IfModule>
</Máy chủ ảo>
</IfModule>

<Máy chủ ảo 127.0.0.1:80>
  ProxyPass /idp http://localhost:8080/idp/ thử lại=5
  ProxyPassReverse /idp http://localhost:8080/idp/ thử lại=5
  <Vị trí /idp>
   Yêu cầu tất cả cấp
  </Vị trí>
</Máy chủ ảo>

Tôi đã đơn giản hóa tệp conf của mình để xóa https. Cấu hình bên dưới hoạt động tốt nhưng chỉ với http. Tôi sẽ điều tra lý do tại sao cấu hình https tạo ra lỗi 404.

<VirtualHost *:80>
ServerName idp.spectrum.com.cy

 <IfModule mod_proxy.c>
    ProxyPreserveHost On
    ProxyPass /idp/ http://localhost:8080/idp/ retry=5
    ProxyPassReverse /idp/ http://localhost:8080/idp/ retry=5

    <Location /idp>
       Require all granted
    </Location>
 </IfModule>
# Máy chủ ảo này chỉ ở đây để xử lý các lệnh quản trị 
cho Shibboleth, được thực thi từ localhost
<Máy chủ ảo 127.0.0.1:80>
  ProxyPass /idp http://localhost:8080/idp/ thử lại=5
  ProxyPassReverse /idp http://localhost:8080/idp/ thử lại=5
  <Vị trí /idp>
    Yêu cầu tất cả cấp
  </Vị trí>
</Máy chủ ảo>
djdomi avatar
lá cờ za
Tôi không chắc, nhưng bụng tôi nghĩ rằng không có định nghĩa nào cho /idp ở bất cứ đâu. bạn có thể xem https://serverfault.com/questions/429122/apache-virtualhost-proxy-with-a-subdirectory để biết gợi ý giải quyết vấn đề của mình
pierostz avatar
lá cờ bl
@djdomi khi tôi truy cập http//localhost:8080/idp, tôi vẫn nhận được câu trả lời từ ví dụ shibboleth. Vì vậy, tôi đoán đây không phải là trường hợp ...?
djdomi avatar
lá cờ za
Có `` có một mục cho nó, nhưng không có `` hay giải thích theo cách khác: mỗi VirtualHost giống như một bản cài đặt apache độc ​​lập
pierostz avatar
lá cờ bl
Nếu chúng ta ở trên cùng một trang. Có ba Máy chủ ảo ở trên. Một dành cho cổng 80 chuyển hướng đến https, một dành cho https trên cổng 443 (cái mà tôi nghĩ bạn nói là bị thiếu) và một dành cho máy chủ cục bộ trên cổng 80.
lá cờ in
mod_proxy có được bật không?
lá cờ in
Bạn có thể muốn xóa tất cả các lệnh IfModule đó, chúng có công dụng của chúng nhưng hầu hết chúng thường che giấu các vấn đề thay vì ngăn chặn chúng.
Điểm:2
lá cờ cn

Hãy thử tháo cổng khỏi Tên máy chủ chỉ thị. I E.,

Tên máy chủ idp.spectrum.com.cy

Mỗi https://httpd.Apache.org/docs/2.4/mod/core.html#servername cổng là tùy chọn và được phép, nhưng đề cập sau đây trong tài liệu nghe có vẻ như đó có thể là lý do tại sao điều đó Máy chủ ảo cấu hình không hoạt động (trình duyệt không gửi số cổng trong Chủ nhà: tiêu đề).

Nếu bạn đang sử dụng máy chủ ảo dựa trên tên, các Tên máy chủ bên trong <VirtualHost> phần chỉ định tên máy chủ nào phải xuất hiện trong yêu cầu của Chủ nhà: tiêu đề để khớp với máy chủ ảo này.

pierostz avatar
lá cờ bl
Tôi đã thử Tên máy chủ có và không có cổng mà không có bất kỳ sự khác biệt nào. Tôi đã sử dụng cổng dựa trên tài liệu bạn cung cấp. Cảm ơn các đầu vào.
Điểm:1
lá cờ cm

Đó là nghĩa vụ phải

ProxyPass /idp/ http://localhost:8080/idp/

Lưu ý dấu gạch chéo ở cuối ProxyPass đối số đầu tiên của lệnh. Luôn căn chỉnh các dấu gạch chéo trong cả hai đối số.

Của tôi Máy chủ ảo khai báo khá cơ bản và chỉ chứa mức tối thiểu để hoạt động:

<VirtualHost *:80>
    DocumentRoot /var/www/html

    ServerName idp.example.com
    ServerAlias idp
    ErrorLog  logs/error_log
    CustomLog logs/access_log    
</VirtualHost>
<VirtualHost *:443>
    DocumentRoot /var/www/html

    SSLEngine on
    SSLProxyEngine on
    SSLCertificateKeyFile /etc/pki/tls/private/idp.example.com.key
    SSLCertificateFile /etc/pki/tls/certs/idp.example.com.crt
    SSLCertificateChainFile /etc/pki/tls/certs/chain.crt

    ServerName idp.example.com
    ServerAlias idp
    ErrorLog  logs/ssl-error_log
    CustomLog logs/ssl-access_log combined
</VirtualHost>

Đây là IDP của tôi /etc/httpd/conf.d/idp.conf:

ProxyPass /idp/ http://localhost:8080/idp/ thử lại=5
ProxyPassReverse /idp/ http://localhost:8080/idp/

<Ủy quyền http://localhost:8080>
       Yêu cầu tất cả cấp
       RequestHeader đặt X-Forwarded-Proto https
       RequestHeader đặt X-Proxied-Https trên
       RequestHeader đặt Proxy-ssl-id %{SSL_SESSION_ID}s
</Ủy quyền>
pierostz avatar
lá cờ bl
Cảm ơn rất nhiều vì điều này. Dấu gạch chéo bị thiếu. Thật đơn giản. Tôi gặp một số vấn đề khác nhưng nếu không có dấu gạch chéo ở cuối thì tôi sẽ không giải quyết được chúng.

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