วิธีการกำหนดค่าการรับรองความถูกต้องพื้นฐานในโฮสต์เสมือน Apache httpd?


48

ฉันพยายามกำหนดค่าการเข้าถึงโดยใช้ Mercurial โดยใช้ Apache http มันต้องมีการตรวจสอบ /etc/apache2/sites-enabled/mercurialหน้าตาของฉันเป็นแบบนี้:

NameVirtualHost *:8080

<VirtualHost *:8080>
    UseCanonicalName Off
    ServerAdmin  webmaster@localhost
    AddHandler cgi-script .cgi
    ScriptAliasMatch ^(.*) /usr/lib/cgi-bin/hgwebdir.cgi/$1
</VirtualHost>

ทุกบทช่วยสอนที่ฉันอ่านบนอินเทอร์เน็ตบอกให้ฉันแทรกบรรทัดเหล่านี้:

AuthType Basic
AuthUserFile /usr/local/etc/httpd/users

แต่เมื่อฉันทำฉันได้รับข้อผิดพลาดต่อไปนี้:

# /etc/init.d/apache2 reload
Syntax error on line 8 of /etc/apache2/sites-enabled/mercurial:
AuthType not allowed here

distro ของฉันคือ Ubuntu ที่กำหนดเองชื่อ Turnkey Linux Redmine

คำตอบ:


73

คุณควรวางสิ่งนี้ไว้ในคำสั่งตำแหน่ง:

<VirtualHost *:8080>

<Location /> #the / has to be there, otherwise Apache startup fails
            Deny from all
            #Allow from (You may set IP here / to access without password)
            AuthUserFile /usr/local/etc/httpd/users
            AuthName authorization
            AuthType Basic
            Satisfy Any # (or all, if IPs specified and require IP + pass)
                        # any means neither ip nor pass
            require valid-user
</Location>
...
</VirtualHost>

1
สิ่งนี้ไม่ได้ผลสำหรับฉัน <Location /opt/mcmap/shapefiles.php> AuthType Kerberos AuthName KerberosLogin KrbServiceName HTTP/intranet.spectrumasa.com KrbMethodNegotiate On KrbMethodK5Passwd On KrbAuthRealms DOMAIN.COM Krb5KeyTab /etc/httpd/conf/intranet.keytab require valid-user Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,deny Allow from all SetOutputFilter DEFLATE </Location>
shorif2000

1
หน้า apache doc อธิบายทั้งหมดนี้ แต่น่ารำคาญไม่เคยให้ตัวอย่างที่สมบูรณ์แก่คุณ ฉันคัดลอกบางส่วนของตัวอย่าง แต่ไม่ได้รับrequire valid-userส่วน ตัวอย่างที่สมบูรณ์สามารถเป็นสิ่งที่ยอดเยี่ยม ขอบคุณ
Buttle Butkus

1
@sharif ควรเป็น <ตำแหน่ง /> ซึ่งหมายถึงการเข้าถึงรูท URL ของ yourhost.com/ ควรกำหนดค่าการรับรองความถูกต้องนั้น
agbb

1
ฉันต้องการ<Location />ในกรณีใด ๆ เพื่อไม่ให้เกิดข้อผิดพลาดทางไวยากรณ์เมื่อโหลดไฟล์กำหนดค่า
Perseids

3
ทำไม<Location /> แก้ไข<Location>ด้วยข้อความบันทึกภายในของ "แก้ไข ... เพื่อหลีกเลี่ยงปัญหามาก" แต่ไม่ได้บอกเหตุผลที่แท้จริงในคำตอบ ไม่มีสิ่งใดที่เป็น<Location>คำสั่ง (เช่นสิ่งที่ไม่มีตำแหน่ง) ใน Apache นั่นทำให้เกิดปัญหาแน่นอน ;) (ดูเช่นด้านบน)
Sz

9

ฉันใช้ Apache2 บน Ubuntu 10.04 - ปัญหาเดียวกันและขอบคุณสำหรับการแก้ปัญหา ฉันพบว่าฉันต้องใส่การกำหนดค่า/etc/apache2/apache2.conf

คุณสามารถสร้างชื่อผู้ใช้และรหัสผ่านโดยใช้ htpasswd ไฟล์ใหม่:

$ htpasswd -c /srv/auth/.htpasswd squire

หากต้องการต่อท้ายไฟล์ที่มีอยู่:

$ htpasswd -b /srv/auth/.htpasswd squire2 tickleme2

7

คุณสามารถป้องกันตำแหน่งหรือไดเรกทอรี สำหรับไดเรกทอรีเพิ่มสิ่งที่ชอบ:

<Directory /some/dir/cgi-bin/>
    Options +ExecCGI
    AddHandler cgi-script .cgi
    AuthType Basic
    AuthName 'Private scripts'
    AuthUserFile '/some/other/dir/.htpasswd'
    Require valid-user
</Directory>

นอกจากนี้คุณยังสามารถเพิ่มDenyและAllowสั่งการสำหรับการควบคุมที่ดีขึ้น


4

VirtualHostมันเสียงเหมือนคุณระบุการตั้งค่าการตรวจสอบภายใน โดยทั่วไปการตั้งค่าเหล่านี้จะถูกระบุภายใต้Directoryคำสั่ง

คุณสามารถใช้.htaccesssไฟล์ได้ แต่การระบุใน Apache conf เป็นค่าเริ่มต้นที่ดีเนื่องจากมีการเปิดรับน้อยกว่า

เอกสาร Apache


3

ฉันใช้ Apache2 บน Ubuntu 10.10 ฉันมีปัญหากับวิธีแก้ไขทั้งหมดข้างต้น แต่วิธีนี้ใช้ได้ดี (จาก apache docs):

<Directory / var / www />
  ดัชนีตัวเลือก FollowSymLinks MultiViews
  AllowOverride ทั้งหมด
  คำสั่งอนุญาต, ปฏิเสธ
  อนุญาตจากทั้งหมด
  AuthType พื้นฐาน
  AuthName "ถูก จำกัด "
  ไฟล์ AuthBasicProvider
  AuthUserFile / etc / users
  ต้องการผู้เยี่ยมชมของผู้ใช้
</ ไดเรกทอรี>

ความแตกต่างที่ใหญ่ที่สุดจากคำตอบข้างต้นน่าจะเป็นชุดคำสั่ง AuthBasicProvider เป็น "ไฟล์" และคำสั่งบังคับรวมถึงบิต "ผู้ใช้" ก่อนชื่อผู้ใช้จริง

หวังว่านี่จะช่วยใครซักคน


3

เรากำลังเรียกใช้ apache รุ่นปรับปรุงหน่วยความจำและพบปัญหานี้

นี่เป็นเพราะบรรทัดต่อไปนี้ไม่มีอยู่ในการกำหนดค่า apache:

LoadModule authz_user_module modules/mod_authz_user.so
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.