Nginx configuration de proxy inverse pour plusieurs domaines
J'ai plusieurs comptes/domaines sur mon serveur. Je suis en utilisant cPanel avec Apache 2.4 et je voulais l'utiliser Nginx comme un proxy inverse. J'ai changé de Apache port, installé Nginx et il fonctionne très bien mais pour un domaine/compte seulement. Je veux l'utiliser pour tous mes domaines sur le serveur, et à tous les futurs comptes. J'ai essayé d'entrer $domain
variable au lieu d'un domaine spécifique mais s'est rendu compte plus tard que nginx ne prend pas en charge les variables. Même chose avec le répertoire de l'utilisateur. Voici mon fichier de config:
user nobody;
worker_processes 4;
error_log logs/error.log crit;
worker_rlimit_nofile 8192;
events {
worker_connections 1024; # you might need to increase this setting for busy servers
use epoll; # Linux kernels 2.6.x change to epoll
}
http {
server_names_hash_max_size 2048;
server_names_hash_bucket_size 512;
server_tokens off;
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 10;
# Gzip on
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/plain application/x-javascript text/xml text/css;
# Other configurations
ignore_invalid_headers on;
client_max_body_size 8m;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
connection_pool_size 256;
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
request_pool_size 4k;
output_buffers 4 32k;
postpone_output 1460;
# Cache most accessed static files
open_file_cache max=10000 inactive=10m;
open_file_cache_valid 2m;
open_file_cache_min_uses 1;
open_file_cache_errors on;
# virtual hosts includes
include "/etc/nginx/conf.d/*.conf";
server {
# this is your access logs location
access_log /usr/local/apache/domlogs/accountusername/example.com;
error_log logs/vhost-error_log warn;
listen 80;
# change to your domain
server_name example.com www.example.com;
location ~* \.(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|htm|html|js|css)$ {
# this is your public_html directory
root /home/accountusername/public_html;
}
location /{
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_connect_timeout 30s;
# change to your domain name
proxy_redirect http://www.example.com:8080 http://www.example.com;
proxy_redirect http://example.com:8080 http://example.com;
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
Ce que je suis en train de faire est de placer un code qui fonctionne pour tous les domaines sur le serveur et à tous les futurs domaines seront ajoutés. Je vois certains forums et les blogs expliquer la configuration des hôtes virtuels (Serveur de blocs), mais je ne suis pas sûr de ce qu'ils sont utilisés pour. Je l'apprécierais si quelqu'un fournit aucune info à ce sujet. Dois-je configurer des serveurs virtuels? Ce qui est nécessaire pour être changé dans mon fichier de configuration? Merci.
Vous devez vous connecter pour publier un commentaire.
Vous de la config est presque correct
Mais la meilleure façon pour vous de ne pas utiliser le port 8080. Tous vous avez besoin est de dire à nginx de lier seulement à l'extérieur de la propriété intellectuelle. Ajouter ip et
bind
mot-clé pour tous voslisten
dans chaqueserver
.Si vous avez manqué de rien, nginx ne lie pas les 127.0.0.1:80, donc apache peut l'engager.
Dans ce cas, vous n'avez pas besoin de tout
proxy_redirect
directives parce que vous n'avez pas besoin de redirection réécrit.Pour le dossier racine, vous pouvez utiliser des variables, mais beaucoup mieux l'utilisation
map
;Plus sur la carte http://nginx.org/en/docs/http/ngx_http_map_module.html
location = /favicon.ico {log_not_found off;access_log off;}
mais il ne fonctionne pas.log_not_found off
et vérifier error_log pour le fichier nginx pas trouvé.Votre idée est une sorte de fantastique. Fonctionner dans de bonnes et prévisible\debuggable façon, il faut créer un "serveur" de bloc pour chaque serveur vous servir, et vous devez écrire le nom de domaine en "proxy_redirect" directive en conséquence.
À gérer beaucoup de domaines - obtenez une liste d'entre eux et d'écrire shell\perl\script python pour générer votre config. Ce script sera plutôt simple.
Et lisez la documentation, de comprendre clairement ce serveur "blocs" sont pour. Peu de temps, ils sont le cœur de nginx les performances de la magie.