今回は「nginxのリバースプロキシ設定のやり方」です。
自己責任でリバースプロキシ化してください
バックグラウンドはapacheとします。
apacheのポート番号は8080、nginxは80です。
apacheの設定
vim /etc/httpd/conf/httpd.conf
Listen 80
↓
Listen 8080
に変えます
バーチャルホスト設定をしたい場合は
<VirtualHost *:8081>
ServerAdmin root@domain
DocumentRoot /var/www/html
ServerName domain
<Directory "/var/www/html">
Order allow,deny
Options FollowSymlinks Includes
Allow from all
Require all granted
AllowOverride all
</Directory>
CustomLog logs/domain_access_log combined
ErrorLog logs/domain_error_log
</VirtualHost>
systemctl restart httpd
を行い設定を反映します。
ポート使用確認をしたいなら
lsof -i:8080
8080はポート番号です
nginxのリバースプロキシ設定
vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name domain;
#access_log /var/log/nginx/host.access.log main;
location / {
root /var/www/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
これが初期設定ですが、リバースプロキシにするには
server {
listen 80;
server_name domain;
#access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
リバースプロキシに必要なコードは
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
です。
location / {
proxy_pass http://127.0.0.1:8080;
}
リバースプロキシに必要なコードです。
http://127.0.0.1のところを違うIPなどに変えると別のサイトのリバースプロキシになります。
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
apacheに接続元IPを知らせるために必要なコードです。
apache側にも
RemoteIPHeader x-forwarded-for
というコードが必要です。
nginx -s relaod
で反映してください。
アクセスして、正常に表示されていれば成功です。
nginxキャッシュにやり方は
で書いています。
最後まで読んでくれてありがとうございました。
コメントを残す