জেটি কীভাবে https এ পুনর্নির্দেশ করতে পারেন


11

আমি জেটি (.1.১.২৪) ব্যবহার করে HTTP- র https তে সমস্ত অনুরোধগুলি পুনর্নির্দেশ করতে চাই। কোনও কারণে (আমার অজ্ঞতা) এটি আমাকে সরিয়ে দিচ্ছে। এটি আমার কাছে রয়েছে:

<New id="redirect" class="org.mortbay.jetty.handler.rewrite.RedirectPatternRule">
  <Set name="pattern">http://foobar.com/*</Set>
  <Set name="location">https://foobar.com</Set>
</New>

প্রতিক্রিয়া হিসাবে আমি 200 পেয়েছি - ঠিক আছে, এবং শরীরটি HTTP এর উপরে পৃষ্ঠা, অর্থাৎ পুনঃনির্দেশটি ঘটে না।


আমি ধরে নিয়েছি যে আপনি যদি ম্যানুয়ালি এইচটিটিপিএস ইউআরএল প্রবেশ করেন তবে সার্ভারটি সঠিকভাবে প্রতিক্রিয়া জানাবে। আপনি কী জেটি লগ আউটপুট এবং / অথবা আপনার ব্রাউজারে কী ঘটছে তার বিশদ সরবরাহ করতে পারেন - আপনার ব্রাউজারটি কি একেবারেই পুনর্নির্দেশ পেতে পারে? যদি তাই হয় তবে আপনি কোন ইউআরএল প্রবেশ করেছেন এবং কোন ইউআরএল আপনাকে পুনর্নির্দেশ করেছে?
টিম

হ্যাঁ, সার্ভারের https অনুরোধের সঠিকভাবে প্রতিক্রিয়া। আমি কেন আগে 502 পাচ্ছিলাম তা আমি খুঁজে পেয়েছি, আমি 8080-তে জেটির শ্রোতাদের মন্তব্য দিয়েছিলাম ...
নোয়েল কেনেডি

উত্তর:


6

জেটি 9 এর পক্ষে কথা বলছেন ... আপনার এসএসএল সংযোগকারী ইতিমধ্যে কাজ করে এমনটি আপনি কীভাবে এটি করতে পারেন তা এখানে:

পদক্ষেপ 1: আপনার ওয়েব.এক্সএমএল এ যুক্ত করে এসএসএল দিয়ে সমস্ত কিছু চলেছে তা নিশ্চিত করুন। আপনি যদি HTTP- র মাধ্যমে কোনও সংস্থান অ্যাক্সেস করার চেষ্টা করেন তবে এটি 403! সিকিউর ত্রুটি ফিরে আসবে

<security-constraint>
  <web-resource-collection>
   <web-resource-name>Everything</web-resource-name>
   <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
   <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>

পদক্ষেপ 2: জেটি এইচটিটিপিএসে পুনর্নির্দেশ করুন যখন এটি 403! সিকিউর ত্রুটিটি আপনার জেটি.এক্সএমএলে যোগ করে দেখুন sees

<New id="tlsHttpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
   <Arg>
      <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
         <!-- This says... Redirect to https://host:8443 if server returns "NOT SECURE" error -->
         <Set name="secureScheme">https</Set>
         <Set name="securePort">8443</Set>
      </New>
   </Arg>
   <Call name="addCustomizer">
      <Arg>
         <New class="org.eclipse.jetty.server.SecureRequestCustomizer" />
      </Arg>
   </Call>
</New>

<!-- This is your HTTP connector, you should have another one for HTTPS -->
<New class="org.eclipse.jetty.server.ServerConnector">
   <Arg name="server">
      <Ref refid="MyServer" />
   </Arg>
   <Arg name="factories">
      <Array type="org.eclipse.jetty.server.ConnectionFactory">
         <Item>
            <New class="org.eclipse.jetty.server.HttpConnectionFactory">
               <Arg name="config">
                  <!-- defined above -->
                  <Ref refid="tlsHttpConfig" />
               </Arg>
            </New>
         </Item>
      </Array>
   </Arg>
   <Set name="host">localhost</Set>
   <Set name="port">8080</Set>
</New>

4

আমি মনে করি যে প্যাটার্নটি কেবলমাত্র ইউআরআইয়ের সাথে মিলছে। আপনার কিছু ব্যবহার করা উচিত:

<New id="forwardedHttps" class="org.eclipse.jetty.rewrite.handler.ForwardedSchemeHeaderRule">
           <Set name="header">X-Forwarded-Scheme</Set>
           <Set name="headerValue">https</Set>
           <Set name="scheme">https</Set>
</New>

দেখুন: http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/rewrite/handler/RwwriteHandler.html


জেটি 9 অনুসারে, লিঙ্কটি গ্রহন করা উচিত eclipse.org/jetty/docamentation/current/rewrite-handler.html
foo

1

আমি কেবল দস্তাবেজটি যুক্ত করেছি: http://wiki.eclipse.org/ জেটি / হাউটো / কনফিগার_এসএসএল# পুনঃনির্দেশ_হট্ট_প্রেম_সামগ্রী_তে_এইচটিপিএস


1
সার্ভার ফল্ট আপনাকে স্বাগতম! সাধারণত সাইটটিতে উত্তরগুলি নিজেরাই দাঁড়াতে সক্ষম করতে আমরা পছন্দ করি - লিঙ্কগুলি দুর্দান্ত, তবে যদি সেই লিঙ্কটি কখনও ভেঙে যায় তবে উত্তরটি এখনও সহায়ক হতে পারে enough আরও বিস্তারিত অন্তর্ভুক্ত করতে দয়া করে আপনার উত্তর সম্পাদনা বিবেচনা করুন।
voretaq7

0

আমি যতদূর বলতে পারি, জেটি 6 দিয়ে যে কোনও নিয়ম / হ্যান্ডলার পাঠানো হয়েছে তার সাথে এটি করা সহজ নয়।

RedirectPatternRuleউপর ম্যাচ targetতাই আপনার নিয়ম ম্যাচিং হয় না যা, জেটি সার্ভার পাথ, এবং পূর্ণ কোনো URI হয়।

আপনি এটিকে পরিবর্তন করতে পারেন:

<New id="redirect" class="org.mortbay.jetty.handler.rewrite.RedirectPatternRule">
  <Set name="pattern">/*</Set>
  <Set name="location">https://foobar.com</Set>
</New>

তবে এতে 2 টি সমস্যা রয়েছে:

  1. এটি সমস্ত অনুরোধগুলি পুনঃনির্দেশ করবে (এমনকি httpsঅনুরোধগুলিও)
  2. এটি অনুরোধ করা ইউআরএলটিকে অ্যাকাউন্টে নেয় না (এটি সর্বদা locationনির্দিষ্ট হিসাবে পুনর্নির্দেশ করে এবং এর সাথে মেলে এমন কোনও কিছু উপেক্ষা করে pattern)

আপনি কিছু কৌশল নিয়ে প্রথম ইস্যুটি কাটিয়ে উঠতে পারেন।
আপনি মোড়ানো পারেন RewriteHandlerএকটি ContextHandler, এবং একটি প্রসঙ্গের হ্যান্ডলার আপনি কোন সংযোগকারীগুলিকে তা থেকে অনুরোধ পরিচালনা করবে (নির্দিষ্ট করার অনুমতি দেয় setConnectorNames)। সুতরাং, আপনি এটি পুনরায় লেখার জন্য কেবলমাত্র http সংযোগকারী (গুলি) এর অনুরোধগুলিতে প্রয়োগ করতে পারেন।

আমি যদিও দ্বিতীয় ইস্যুটি কাটিয়ে ওঠার কোনও উপায় ভাবতে পারি না।

আমি মনে করি এটির জন্য আপনার নিজের পুনর্নির্দেশের বিধিটি লিখতে আপনার সেরা বেট ইচ্ছে করে। আপনার যদি এটি করার জন্য যদি আপনার কাছে উন্নয়নের সংস্থান না থাকে তবে আমার সাথে যোগাযোগ করুন (আপনি আমার ব্লগের মাধ্যমে আমার ইমেল ঠিকানাটি খুঁজে পেতে পারেন, যা আমার প্রোফাইলে রয়েছে) এবং আমি একটি হুইপ আপ করতে পারি (জেটির মতো একই লাইসেন্সের আওতায়)। কোনও নিয়ম লিখতে এটি বেশ সোজা হয়ে যাবে যা HTTP- তে সরাসরি পুনঃনির্দেশ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.