Nginx Config: Front-End Reverse Proxy ke Port Lain

22

Saya memiliki server web kecil yang melayani permintaan pada port 5010 daripada 80.

Saya ingin menggunakan nginx sebagai proxy ujung depan untuk menerima permintaan pada port 80 dan kemudian membiarkan permintaan tersebut ditangani oleh port 5010.

Saya telah menginstal nginx dengan sukses dan berjalan dengan lancar di Ubuntu Karmic.

Tapi, upaya saya untuk mengkonfigurasi ulang nginx.conf default belum berhasil.

Saya mencoba memasukkan dalam direktif server argumen mendengarkan untuk port 5010.

Saya juga sudah mencoba direktif proxy_pass.

Setiap saran tentang perubahan yang perlu dibuat atau arahan yang perlu diatur agar hanya memiliki port forwarding.

Ted Karmel
sumber

Jawaban:

22

Saya berasumsi bahwa nginx bukan server mendengarkan pada port 5010 dan juga 80, benar? Sesuatu yang lain sedang mendengarkan pada 5010 dan Anda ingin memiliki proxy nginx ke server itu?

Jika itu masalahnya, ini contoh konfigurasi bagus yang pernah saya gunakan di masa lalu dengan sukses:

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;
        }
}

Saya percaya itu harus mencapai apa yang Anda cari. Semoga berhasil!

vmfarms
sumber
ini tidak berfungsi pada macOS brew nginx. Anda harus menambahkan blok http {} di sekeliling server, jika tidak: nginx: [emerg] "server" tidak diizinkan di sini
muenalan
13

Cukup minimalis - Saya telah meninggalkan pengaturan proxy sebagai default, meskipun Anda mungkin ingin melihatnya untuk menyesuaikan dengan kebutuhan Anda.

# 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/;

        }
    }
}
tylerl
sumber
2
Tyler - solusi minimal Anda baik. Itu yang saya inginkan. Akan memberi Anda poin jika saya bisa tetapi masih baru di serverfault
Ted Karmel