การกำหนดค่า Nginx: Front-End Reverse Proxy ไปยังพอร์ตอื่น


22

ฉันมีเว็บเซิร์ฟเวอร์ขนาดเล็กที่ให้บริการการร้องขอบนพอร์ต 5010 มากกว่า 80

ฉันต้องการใช้ nginx เป็น front end proxy เพื่อรับคำร้องขอบนพอร์ต 80 จากนั้นปล่อยให้คำร้องขอเหล่านั้นถูกจัดการโดยพอร์ต 5010

ฉันติดตั้ง nginx เรียบร้อยแล้วและทำงานได้อย่างราบรื่นบน Ubuntu Karmic

แต่ความพยายามของฉันในการกำหนดค่าเริ่มต้น nginx.conf ไม่สำเร็จ

ฉันพยายามรวมไว้ในเซิร์ฟเวอร์ directive เพื่อฟังอาร์กิวเมนต์สำหรับพอร์ต 5010

ฉันได้ลองสั่ง proxy_pass ด้วย

คำแนะนำเกี่ยวกับการเปลี่ยนแปลงที่จำเป็นต้องทำหรือคำสั่งที่จำเป็นต้องตั้งค่าเพื่อให้มีเพียงการส่งต่อพอร์ต

คำตอบ:


22

ฉันสมมติว่า nginx ไม่ใช่เซิร์ฟเวอร์ฟังบนพอร์ต 5010 และ 80 ใช่ไหม มีอะไรอีกที่กำลังฟังบน 5010 และคุณต้องการมีพร็อกซี nginx กับเซิร์ฟเวอร์นั้นหรือไม่

หากเป็นกรณีนี้เป็นตัวอย่างการกำหนดค่าที่ดีที่ฉันเคยใช้ในอดีตกับความสำเร็จ:

server {
        listen       80;
        server_name  <YOUR_HOSTNAME>;
        location / {
            proxy_pass         http://127.0.0.1:5010/;
            proxy_redirect     off;

            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

            client_max_body_size       10m;
            client_body_buffer_size    128k;

            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;

            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }
}

ฉันเชื่อว่าควรบรรลุสิ่งที่คุณต้องการ โชคดี!


สิ่งนี้ไม่ทำงานบน macOS brew nginx คุณต้องเพิ่ม http {} บล็อกเซิร์ฟเวอร์รอบมิฉะนั้น: nginx: [ฉุกเฉิน] "เซิร์ฟเวอร์" ไม่อนุญาตให้สั่งที่นี่
muenalan

13

ค่อนข้างเรียบง่าย - ฉันปล่อยให้การตั้งค่าพร็อกซีเป็นค่าเริ่มต้นถึงแม้ว่าคุณอาจต้องการดูเพื่อปรับให้เข้ากับความต้องการของคุณ

# NGINX configuration

# System configuration ##################
worker_processes  3;
events {
    worker_connections  1024;
}
user nobody;

# Web configuration #####################
http {
    server {
        listen 80 default;
        location / {
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header   Host             $host;

            proxy_pass http://127.0.0.1:5010/;

        }
    }
}

2
Tyler - ทางออกเล็กน้อยของคุณดี นั่นคือสิ่งที่ฉันต้องการ จะให้คะแนนกับคุณถ้าฉันทำได้ แต่ยังใหม่กับ serverfault
Ted Karmel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.