Khám phá gần đây
Với IIS được đặt trở lại cổng 80
, khi tôi đặt http://localhost/
vào máy tính WHS, nó sẽ cho tôi trang cảnh báo "Có vấn đề với chứng chỉ bảo mật của trang web này". Nếu tôi "Tiếp tục" bằng mọi giá, url này sẽ xuất hiện https://localhost/Remote/logon?ReturnUrl=%2fremote
cho Truy cập Web từ xa Windows Home Server 2011 cho một username
và password
. Bây giờ, tôi không thể nhớ lại chắc chắn, nhưng tôi không tin rằng ban đầu chỉ là http://localhost/
vấn đề này. Tuy nhiên, dường như điều này có thể ảnh hưởng đến bất kỳ nỗ lực nào để truy cập localhost (bất kể cổng).
Điều gì thực sự có thể là vấn đề chính
Ôi những rắc rối của mạng! Một điều khiến tôi bận tâm là tại sao hai trong số các trang web sẽ "một phần" xuất hiện, và những trang khác thì không. Sau đó, việc chạy theo dõi NET của Fireorms đã tiết lộ cho tôi rằng vấn đề chính của tôi là ISP của tôi hoạt động như proxy DNS và tất nhiên nó không tìm thấy các trang web thử nghiệm của tôi. Nhưng nó không tìm ra hai trang web là trực tiếp tại www.
(không test.
địa chỉ), và xuất hiện để phục vụ lên đó, nhưng những hình ảnh bị chặn vì (tôi giả sử) Tôi đã thiết lập các khối để truy cập vào các tập tin hình ảnh nếu không phải từ www.
cho trang web cụ thể.
Điều đó giải thích sự bí ẩn của những hình ảnh không hiển thị (mong đợi trong localhost:8080
cuộc gọi trực tiếp ) và hành vi kỳ quặc trong "một phần" tìm thấy hai trong số năm trang web cụ thể đó.
Bây giờ tôi cần tìm ra cách cấu hình chính xác bộ định tuyến hoặc tệp proxy của mình để chuyển hướng quay lại máy tính WHS của tôi. Tôi đang sử dụng dịch vụ internet vệ tinh Wildblue, vì tôi ở ngoài khu vực của bất kỳ kết nối dịch vụ nào nhanh hơn. Họ có tệp "tối ưu hóa" (tôi không biết mọi người có thể xem được hay không, nếu không, về cơ bản giống như phiên bản này ), tôi có thể sửa đổi và đưa vào hệ thống cục bộ của mình để đạt được những gì tôi cần, nhưng tôi không chắc chắn chính xác những gì tôi có thể cần phải làm ở đó.
Nếu bất cứ ai có bất kỳ đề xuất nào về việc sửa đổi tệp đó hoặc cách định cấu hình bộ định tuyến Linksys E1200 của tôi để tránh gửi đến proxy nếu đó là trang web cục bộ, thì đó có thể là bước đầu tiên (và có thể cuối cùng) để tôi giải quyết các vấn đề của mình.
Mã đại diện dựa trên các khuyến nghị của harrymc ... vẫn không hoạt động
Cổng IIS được đặt thành :90
.
httdp
tập tin:
Listen *:80
ServerName localhost:80
vhosts
tập tin:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost
ProxyRequests off
ProxyPass / http://127.0.0.1:90/
ProxyPassReverse / http://127.0.0.1:90/
</virtualHost>
<VirtualHost *:80>
DocumentRoot "C:/Users/Public/LocalWebsites/site1.net/httpdocs"
ServerName test.site1.net
ProxyRequests off
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/Users/Public/LocalWebsites/site2.net/httpdocs"
ServerName test.site2.net
ProxyRequests off
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/Users/Public/LocalWebsites/site3.com/httpdocs"
ServerName test.site3.com
ProxyRequests off
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/Users/Public/LocalWebsites/site4.com/httpdocs"
ServerName test.site4.com
ProxyRequests off
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/Users/Public/LocalWebsites/site5.com/httpdocs"
ServerName test.site5.com
ProxyRequests off
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
Cập nhật trước: Những gì tôi đã tin là vấn đề chính (có thể là vấn đề phụ)
Làm cách nào để tôi tạo Windows Home Server (chạy IIS) chuyển tiếp URL localhost cụ thể sang cổng 8080
để Apache (không phải IIS) chạy trên cùng một máy chọn yêu cầu phục vụ trang?
Tập c:\Windows\System32\drivers\etc\hosts
tin đã được thay đổi (xem bên dưới), nhưng tôi cho rằng điều đó không liên quan gì đến việc định tuyến lại một cổng mới. IIS, tôi cũng giả sử, đang chọn test.whatever
yêu cầu url cụ thể trên cổng 80
và định tuyến đến máy chủ cục bộ của chính nó trên cùng một cổng.
Tôi đã tải xuống Định tuyến yêu cầu ứng dụng từ một mẹo trên trang web mà tôi tìm thấy khi nghiên cứu, nhưng khi xem nó, tôi không chắc liệu nó có giúp ích hay không (hy vọng của tôi là thiết lập một số url chuyển tiếp dựa trên cổng 8080
bằng nó). Tôi là một nhà thiết kế web, không phải là một thuật sĩ mạng. Vì vậy, làm thế nào tất cả những điều này làm việc có phần khó nắm bắt đối với tôi.
Một hướng đi khả thi
Dựa trên liên kết này (được tìm thấy sau khi tìm kiếm thêm dựa trên nhận xét đầu tiên của erikxiv bên dưới) Tôi đã thử cách sau trong IIS dưới dạng viết lại URL:
Quy tắc đi:
Trận đấu: .*
(dường như kiểm tra ổn)
Điều kiện:
Phù hợp với bất kỳ ... (những điều này dường như kiểm tra mẫu phù hợp)
{HTTP_HOST} Matches the Pattern test\.site1\.net
{HTTP_HOST} Matches the Pattern test\.site2\.net
{HTTP_HOST} Matches the Pattern test\.site3\.com
Viết lại hành động:
http://localhost:8080/{R:0} (it would not let me put R:1 like the example)
Nhưng dường như vẫn không có chuyển tiếp!
Thông tin bên dưới bây giờ là tất cả nền tảng đằng sau yêu cầu mới, ở trên.
Thông tin cơ bản
Gần đây tôi đã thay đổi một máy tính để bàn cũ đang chạy Windows XP thành Windows Home Server (2011). Máy tính cũ cũng là máy chủ lưu trữ các trang web thử nghiệm cục bộ đang chạy trên bản cài đặt Apache. Thực hiện một số nghiên cứu đã tiết lộ rằng chạy Apache trên máy WHS sẽ không khó như tôi nghĩ ban đầu (nhiều trang web nói rằng IIS của WHS và Apache sẽ gây ra sự cố, nhưng một số ít tôi thấy không đề cập gì cả nếu được thiết lập chính xác- - về cơ bản, đảm bảo không có xung đột cổng).
Vì vậy, tôi đã cài đặt WAMP (phiên bản 64 bit) cho máy tính WHS và thay đổi cài đặt trong httpd
tệp cấu hình Apache để nghe tại cổng 8080
để không xảy ra xung đột với IIS. Tôi đã thiết lập tệp máy chủ ảo của mình như trên máy tính XP, chỉ khi thay đổi cổng.
Về cơ bản, mọi thứ dường như đang chạy tốt (tuy nhiên, xem cập nhật), ngoại trừ ...
Vấn đề (Bản gốc)
Mặc dù các trang đến các trang web cục bộ hoạt động tốt và tất cả các css và javascript đều hoạt động, mọi tệp hình ảnh đều không hiển thị . Thông tin đường dẫn là chính xác như được chứng minh bằng cách nhấp chuột phải và chọn View Image Info
(trong Firefox ... bằng cách này, hình ảnh không hiển thị trong bất kỳ trình duyệt nào, vì vậy nó không phải là lỗi trình duyệt).
Tuy nhiên, điều tôi nhận thấy là Type
trong hộp thông tin hình ảnh đang hiển thị text/html
, chứ không phải PNG Image
hoặc JPEG Image
vv Đây là thông tin bên dưới nơi hiển thị thông tin đường dẫn (địa chỉ) - trong phần đó, nó nhận ra rằng chính tệp đó là Type
một trong hai Image
hoặc Background
.
Nhưng mặc dù thực tế đó, có vẻ như thay vì nhận ra loại mime chính xác (tôi giả sử) của hình ảnh trong html (thực ra là php tạo html), thay vào đó, nó đang cố xử lý hình ảnh (cho dù là một img
yếu tố hay css background-image
) như văn bản, và do đó cho tôi không có gì! Nhưng tôi không thể hiểu tại sao. Các mime
tập tin kiểm soát Apache mime-loại là đúng. Các trang có các tiêu đề sau ...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
... nhưng những điều đó không nên gây ra sự cố (chúng không xảy ra khi chạy trên XP, cũng như trên trang web trực tiếp).
Vì vậy, tôi đang tìm kiếm suy nghĩ về:
- Là phân tích của tôi về loại mime là vấn đề chính xác (dựa trên cập nhật, có thể không)?
- Nơi nào khác tôi có thể nhìn có thể gây ra vấn đề, và làm thế nào để khắc phục nó? Nó vẫn có thể là một cuộc xung đột với IIS trên WHS, và nếu vậy, thì sao? Nó có thể là bất cứ điều gì trong php (điều này dường như không thể), và nếu vậy, thì sao? Tôi có thể kiểm tra cái gì khác trong Apache?
Thông tin cập nhật (với nhiều vấn đề [liên quan?]
Làm nhiều điều rắc rối hơn, tôi đã đi đến kết luận rằng ít nhất một phần của vấn đề dường như là sự thay đổi đối với cổng :8080
. Đầu tiên, tôi nhận ra rằng không phải tất cả đều tốt như tôi nghĩ khi truy cập vào tất cả các trang web của mình. Tôi có đại diện này trong c:\Windows\System32\drivers\etc\hosts
tập tin của tôi :
127.0.0.1 localhost
127.0.0.1 test.site1.net
127.0.0.1 test.site2.net
127.0.0.1 test.site3.com
127.0.0.1 test.site4.com
127.0.0.1 test.site5.com
Và đại diện này trong vhosts
tập tin apache của tôi :
NameVirtualHost *:8080
<VirtualHost *:8080>
DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site1.net/httpdocs"
ServerName test.site1.net
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site2.net/httpdocs"
ServerName test.site2.net
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site3.com/httpdocs"
ServerName test.site3.com
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site4.com/httpdocs"
ServerName test.site4.com
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site5.com/httpdocs"
ServerName test.site5.com
</VirtualHost>
Đây là hành vi : site1
và site4
đang hiển thị, nhưng không có hình ảnh. Ba người kia không xuất hiện chút nào, nhưng cho Network Error (dns_unresolved_hostname)
.
Tuy nhiên, nếu tôi truy cập trang web đầu tiên trong vhost trên máy WHS bằng cách sử dụng localhost:8080
trong url, thì hình ảnh sẽ hiển thị và bất kỳ trang web nào là đầu tiên trong tệp vhosts của tôi cũng xuất hiện (dự kiến); tuy nhiên, nó làm như vậy ngay cả khi đó là vị trí mà trước đây sẽ không (vì vậy nếu tôi chuyển site2
đến vị trí đầu tiên, nó sẽ bắt đầu "hoạt động" qua localhost:8080
cuộc gọi).
Tôi biết các tệp hình ảnh của mình đang trả về lỗi 403
( đã sửa, ban đầu tôi đã nói 404 ) khi được truy cập qua test.site4.com
cú pháp trong url và tôi nghi ngờ rằng hình ảnh của mình hiển thị là text/html
do các tệp đang trả về lỗi đó (vì vậy tôi không nghĩ vậy bây giờ là một vấn đề kiểu mime vì không thể tìm thấy hình ảnh). Nhưng điều kỳ lạ là các đường dẫn là chính xác và các tệp không phải hình ảnh (javascript và css) đang hoạt động tốt.
Vì vậy, trong tâm trí của tôi có vẻ như nó có thể là một cái gì đó với cổng chuyển sang 8080
. Vấn đề của tôi bây giờ là:
- Tại sao các tệp máy chủ và vhost của tôi không tìm thấy chính xác tất cả các trang web (có một số tệp khác tôi cần sửa đổi trên Windows Home Server) không?
- Trên các trang web này hoạt động, tại sao các hình ảnh cụ thể không được tìm thấy (với lỗi 403, đó là "cấm" tôi tin, điều này sẽ vô nghĩa nếu các tệp khác trong các thư mục trang web được phép truy cập)?
- Tại sao
localhost:8080
truy cập hoạt động không có vấn đề gì liên quan đến hai vấn đề đầu tiên?
Một số thông tin khác
Một yêu cầu đã được thực hiện cho tôi để gửi các tập tin nhật ký. Tuy nhiên, tôi phát hiện ra rằng không có nhật ký nào xảy ra ngoại trừ (nó xuất hiện) trong những trường hợp đó khi tôi đã truy cập thông qua localhost:8080
cuộc gọi trực tiếp đến trang web "mặc định".
Vì vậy, tôi đã tắt các dịch vụ WAMP và đi đến url và phát hiện ra hành vi tương tự như khi WAMP đang chạy. Điều này dường như chỉ ra rằng IIS vẫn đang kiểm soát các tên miền, thay vì Apache chọn chúng ( ai đó có thể xác nhận giả định của tôi ở đó không? ) , Và do đó, vấn đề có thể vẫn là điều gì đó với việc kiểm soát chính máy chủ WAMP.