Nginx - Примените основного автора, только если существует htaccess файл

Похоже на использование общедоступного имени интернет-домена или интернет-IP-адреса, связанного с сервером Linux, чтобы сделать перенаправление портов. Путь по существу похож на это:

окна-> internet1-> internet2-> Linux-> internet2

То, что Вы хотите сделать, использовать внутренний IP-адрес или внутреннее имя, которое связано с системой Linux. Если Вы сделаете ipconfig в терминале окон, то Вы будете видеть, что Ваш IP-адрес запускается с чего-то как 192.168.x.x или 10.x.x.x. Когда Вы будете ssh'd в свой сервер Linux, сделайте ifconfig, чтобы получить его IP-адрес, внутренний к Вашей сети и использовать ее вместо этого. Это дало бы Вам соединение, которое больше походит на это:

окна-> Linux-> internet2

Между прочим, если Вы используете ssh-X из Вашего virtualbox Linux и затем запускаете Firefox из командной строки, Вы по существу видите то, что Вы видели бы, использовали ли Вы Firefox физически в сервере Linux. Это не производит точное сравнение в Ваших целях. Это отчасти похоже на vnc или удаленный рабочий стол.

Для создания более точного сравнения в virtualbox используйте ssh-D localhost:4000 username@linuxServer и затем используйте настройки прокси Firefox точно так же, как Вы сделали в окнах.

1
задан 13 July 2013 в 00:47
2 ответа

Это то, что MTecknology и kolbyjack посоветовали мне сделать на #nginx .

server {
    listen 80;
    server_name ~^(?<instance>.+?)\.foo.example.com$;
    root /var/www/$instance.foo.example.com;

    set $htaccess_user_file /var/htaccess/$instance.foo.example.com/.htaccess;

    if (!-f $htaccess_user_file) {
        return 599;
    }

    location / {
        auth_basic "Restricted";
        auth_basic_user_file $htaccess_user_file;

        try_files $uri /index.html =404;
    }

    error_page 599 = @foo;

    location @foo {
        root /var/www/$instance.foo.example.com;
        try_files $uri /index.html =404;
    }
}

Работали безупречно!

]
3
ответ дан 3 December 2019 в 18:52

Расширение этого ответа , если у вас есть несколько записей / location , которые вам нужно переместите блок if в соответствующее место.

worker_processes 1;

events {
    worker_connections 1024;
    accept_mutex off;
    use epoll;
}

http {
    include mime.types;
    default_type application/octet-stream;

    sendfile on;

    upstream app_server {
        server localhost:8000 fail_timeout=0;
    }

    server {
        listen 80;

        set $htaccess_user_file /etc/secrets/nginx-proxy/htaccess;

        error_log stderr info;

        keepalive_timeout 5;

        location /static {
            expires 30d;
            add_header Pragma public;
            add_header Cache-Control "public";

            autoindex off;
            alias /mnt/static/;

            gzip on;
            gzip_buffers 16 8k;
            gzip_comp_level 9;
            gzip_http_version 1.0;
            gzip_min_length 0;
            gzip_types text/plain
                text/css
                image/x-icon
                image/svg+xml
                image/png
                image/jpg
                image/jpeg
                text/js
                application/javascript
                application/x-javascript;
            gzip_vary on;
            gzip_proxied expired no-cache no-store private auth;
            gzip_disable "MSIE [1-6]\.";
        }

        location /media {
            autoindex off;
            alias /mnt/media/;
        }

        error_page 599 = @noauth;

        location / {
                if (!-f $htaccess_user_file) {
                        return 599;
                }

                auth_basic "Restricted";
                auth_basic_user_file $htaccess_user_file;
                try_files $uri @proxy_to_app;
        }

        location @noauth {
            try_files $uri @proxy_to_app;
        }

        location @proxy_to_app {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_buffering off;

            proxy_pass http://app_server;
        }
    }
}
0
ответ дан 3 December 2019 в 18:52

Теги

Похожие вопросы